РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
426 of 541 menu

Атрибут strides

Атрибут strides класса ndarray возвращает кортеж, содержащий количество байтов, которые необходимо пропустить в памяти, чтобы перейти к следующему элементу вдоль каждой оси. Для одномерного массива шаг соответствует размеру одного элемента в байтах. Для многомерных массивов шаг по каждой оси зависит от порядка расположения элементов (C-style или Fortran-style). Этот атрибут используется для эффективного доступа к данным и позволяет выполнять операции без копирования массива.

Синтаксис

arr.strides

Пример

Давайте создадим одномерный массив и посмотрим на его шаги:

import numpy as np arr = np.array([1, 2, 3, 4, 5]) res = arr.strides print(res)

Результат выполнения кода:

(8,)

Пример

Теперь рассмотрим двумерный массив, созданный по умолчанию (C-style порядок). Шаг по строкам будет больше, чем по столбцам:

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) res = arr.strides print(res)

Результат выполнения кода:

(24, 8)

В данном случае элемент типа int64 занимает 8 байтов. Шаг по столбцам равен 8 байтам (переход к следующему элементу в строке). Шаг по строкам равен 24 байтам (переход к следующей строке, т.е. пропуск 3-х элементов по 8 байтов).

Пример

Изменим порядок расположения элементов на Fortran-style с помощью транспонирования и посмотрим на шаги:

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) transposed = arr.T res = transposed.strides print(res)

Результат выполнения кода:

(8, 24)

Шаги поменялись местами. Теперь переход по столбцам (первая ось) требует 8 байтов, а переход по строкам (вторая ось) требует 24 байта.

Пример

Атрибут strides можно использовать для вычисления размера массива в байтах. Перемножим шаги на размерность соответствующей оси и сложим результаты:

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) strides = arr.strides nbytes = sum((dim - 1) * stride for dim, stride in zip(arr.shape, strides)) + arr.itemsize print(nbytes)

Результат выполнения кода:

48

Полученное значение совпадает с атрибутом nbytes, который возвращает общий размер массива в байтах.

Смотрите также

  • атрибут shape,
    который возвращает размерность массива по каждой оси
  • атрибут itemsize,
    который возвращает размер одного элемента массива в байтах
  • атрибут nbytes,
    который возвращает общий размер массива в байтах
  • атрибут flags,
    который содержит информацию о свойствах памяти массива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить