numpy.lib.Arrayterator#

класс numpy.lib.Arrayterator(var, buf_size=None)[источник]#

Буферизованный итератор для больших массивов.

Arrayterator создаёт буферизованный итератор для чтения больших массивов небольшими непрерывными блоками. Класс полезен для объектов, хранящихся в файловой системе. Он позволяет итерировать по объекту без чтение всего в память; вместо этого читаются и итерируются небольшие блоки.

Arrayterator может использоваться с любым объектом, поддерживающим многомерные срезы. Это включает массивы NumPy, но также переменные из Scientific.IO.NetCDF или pynetcdf, например.

Параметры:
vararray_like

Объект для итерации.

buf_sizeint, необязательный

Размер буфера. Если buf_size предоставлен, максимальный объем данных, которые будут прочитаны в память, составляет buf_size элементов. По умолчанию None, что прочитает столько элементов, сколько возможно, в память.

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

numpy.ndenumerate

Итератор многомерного массива.

numpy.flatiter

Итератор плоского массива.

numpy.memmap

Создать отображение памяти на массив, хранящийся в двоичном файле на диске.

Примечания

Алгоритм работает, сначала находя "бегущее измерение", вдоль которого будут извлекаться блоки. Учитывая массив размерностей (d1, d2, ..., dn), например, если buf_size меньше, чем d1, первое измерение будет использовано. Если, с другой стороны, d1 < buf_size < d1*d2 будет использовано второе измерение, и так далее. Блоки извлекаются вдоль этого измерения, и когда возвращается последний блок, процесс продолжается со следующего измерения, пока все элементы не будут прочитаны.

Примеры

>>> import numpy as np
>>> a = np.arange(3 * 4 * 5 * 6).reshape(3, 4, 5, 6)
>>> a_itor = np.lib.Arrayterator(a, 2)
>>> a_itor.shape
(3, 4, 5, 6)

Теперь мы можем итерировать по a_itor, и он будет возвращать массивы размера два. Поскольку buf_size был меньше любого измерения, первое измерение будет перебираться первым:

>>> for subarr in a_itor:
...     if not subarr.all():
...         print(subarr, subarr.shape) 
>>> # [[[[0 1]]]] (1, 1, 1, 2)
Атрибуты:
var
buf_size
начало
стоп
шаг
shape

Форма массива, по которому выполняется итерация.

flat

Одномерный плоский итератор для объектов Arrayterator.