numpy.lib.Arrayterator

class numpy.lib.Arrayterator(var, buf_size=None)[源代码]

大数组的缓冲迭代器。

Arrayterator 创建一个缓冲迭代器,用于在小的连续块中读取大数组。类对于存储在文件系统中的对象很有用。它允许对对象进行迭代 没有 读取内存中的所有内容;相反,读取并迭代小的块。

Arrayterator 可用于支持多维切片的任何对象。这包括numpy数组,但也包括scientific.io.netcdf或pynetcdf中的变量。

参数
vararray_like

要循环访问的对象。

buf_size可选的

缓冲区大小。如果 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 ,它将返回大小为2的数组。自从 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

数组运算符对象的一维平面迭代器。