NumPy 迭代数组学习笔记
迭代函数
NumPy包含一个迭代器对象numpy.nditer。它是一个有效的多维迭代器对象,可以用来对数组进行迭代。该迭代器对象具有诸如C语言、Fortran等底层序列迭代器的许多好处。
numpy.nditer的基本语法
pythonCopy Codenumpy.nditer(arrays, flags=['buffered'], op_flags=['readwrite'])
- arrays:要迭代的数组。
- flags:可以包括零个或多个以下值:
- c_index:可以通过索引使用C顺序进行迭代。
- f_index:可以通过索引使用Fortran顺序进行迭代。
- multi-index:每次迭代可以同时按照单个索引和多个索引。
- external_loop:给出的值是具有多个值的一维数组,而不是零维数组。
- buffered:缓存底层内存,提供更好的性能。
- op_flags:可以包括零个或多个以下值:
- readwrite:数组是可读写的。
- readonly:数组是只读的。
- writeonly:数组是只写的。
示例
pythonCopy Codeimport numpy as np
a = np.array([1, 2, 3])
for x in np.nditer(a):
print(x)
输出结果:
Copy Code1 2 3
广播迭代
如果要在两个形状不同的数组上进行迭代,NumPy广播迭代可以用来处理这种情况。这是一种隐式扩展数组操作,它可以将较小的数组广播到与另一个较大的数组具有相同的形状。
示例
pythonCopy Codeimport numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 使用广播迭代将两个数组进行迭代
for x, y in np.nditer([a, b]):
print(x, y)
输出结果:
Copy Code1 4
2 5
3 6
ndenumerate 函数
可以使用ndenumerate函数来同时迭代索引和元素值。
示例
pythonCopy Codeimport numpy as np
a = np.array([1, 2, 3])
for index, x in np.ndenumerate(a):
print(index, x)
输出结果:
Copy Code(0,) 1
(1,) 2
(2,) 3