numpy.lib.Arrayterator #

numpy.lib。Arrayterator ( var , buf_size = None ) [来源] #

用于大数组的缓冲迭代器。

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

Arrayterator可以与任何支持多维切片的对象一起使用。这包括 NumPy 数组,还包括来自 Scientific.IO.NetCDF 或 pynetcdf 的变量。

参数
var类似数组

要迭代的对象。

buf_size int,可选

缓冲区大小。如果提供buf_size,则读入内存的最大数据量为buf_size元素。默认值为 None,它将把尽可能多的元素读入内存。

也可以看看

ndenumerate

多维数组迭代器。

flatiter

平面数组迭代器。

memmap

创建到存储在磁盘上的二进制文件中的数组的内存映射。

笔记

该算法的工作原理是首先找到一个“运行维度”,沿着该维度提取块。给定一个维度数组 ,例如,如果buf_size小于,则将使用第一个维度。另一方面,如果 将使用第二维,依此类推。沿着这个维度提取块,当返回最后一个块时,该过程从下一个维度继续,直到读取了所有元素。(d1, d2, ..., dn)d1d1 < 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 对象的一维平面迭代器。