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) 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 开始 停止 步