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, optional -
Размер буфера. Если
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)
Атрибуты: -
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.16.1/reference/generated/numpy.lib.Arrayterator.html