numpy.lib.Arrayterator

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.lib.Arrayterator.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

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) t0 >,例如如果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,它将返回大小为2的数组。由于buf_size小于任何维度,因此第一个维度将首先迭代:

>>> for subarr in a_itor:
...     if not subarr.all():
...         print(subarr, subarr.shape)
...
[[[[0 1]]]] (1, 1, 1, 2)

属性

shape 要迭代的数组的形状。
flat Arrayterator对象的1-D平面迭代器。
var  
buf_size  
开始  
停止