numpy.lib.Arrayterator#

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

大数组的缓冲迭代器.

Arrayterator 创建一个缓冲迭代器,用于以小块连续块的形式读取大数组.该类对于存储在文件系统中的对象非常有用.它允许对对象进行迭代,而*不需要*将所有内容读入内存;相反,会读取并迭代小块.

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

参数:
vararray_like

要迭代的对象.

buf_sizeint, 可选

缓冲区大小.如果提供了 buf_size,读入内存的最大数据量将是 buf_size 个元素.默认是 None,这将尽可能多地读取元素到内存中.

参见

numpy.ndenumerate

多维数组迭代器.

numpy.flatiter

扁平数组迭代器.

numpy.memmap

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

备注

该算法首先找到一个”运行维度”,沿着该维度将提取块.给定一个维度数组 (d1, d2, ..., dn),例如,如果 buf_size 小于 d1,则使用第一个维度.另一方面,如果 d1 < buf_size < d1*d2,则使用第二个维度,依此类推.沿着这个维度提取块,当最后一个块返回时,过程继续到下一个维度,直到读取所有元素.

示例

>>> import numpy as np
>>> 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)
属性:
var
buf_size
start
stop
step
shape

要迭代的数组的形状.

flat

Arrayterator 对象的 1-D 平面迭代器.