Spec-Zone.ru › NumPy 1.11

numpy.lib.Arrayterator

class numpy.lib.Arrayterator(var, buf_size=None) [source]

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

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

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

Параметры:

var : array_like

Объект, по которому необходимо выполнить итерацию.

buf_size : int, необязательно

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

См. также

ndenumerate
Многомерный итератор массивов.
flatiter
Итератор плоского массива.
memmap
Создание отображения в памяти на массив, хранящийся в бинарном файле на диске.

Примечания

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

Примеры

>>> 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)

Атрибуты

shape Форма массива, по которому будет выполнена итерация.
flat Одномерный плоский итератор для объектов Arrayterator.
var
buf_size
start
stop
step

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.lib.Arrayterator.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API