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