numpy.lib.Arrayterator
- class numpy.lib.Arrayterator(var, buf_size=None)[source]
-
Буферизованный итератор для больших массивов.
Arrayteratorсоздаёт буферизованный итератор для чтения больших массивов небольшими смежными блоками. Класс полезен для объектов, хранящихся в файловой системе. Он позволяет итерироваться по объекту *без* чтения всего в память; вместо этого, считываются и итерируются небольшие блоки.Arrayteratorможет использоваться с любым объектом, который поддерживает многомерные срезы. Это включает массивы NumPy, но также переменные из Scientific.IO.NetCDF или pynetcdf, например.- Параметры
-
- vararray_like
-
Объект для итерации.
- buf_sizeint, необязательно
-
Размер буфера. Если
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)
- Атрибуты
-
- var
- buf_size
- start
- stop
- step
shape-
Форма массива, по которому необходимо выполнить итерацию.
flat-
Одномерный плоский итератор для объектов Arrayterator.
© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.lib.Arrayterator.html