如何迭代Numpy数组的初始尺寸?
问题内容:
我有一个形状为Numpy的数组[1000, 1000, 1000, 3]
,是最后一个尺寸为3的维度,包含3D空间矢量分量的三元组。我如何使用nditer
来遍历每个三元组?像这样:
for vec in np.nditer(my_array, op_flags=['writeonly', <???>]):
vec = np.array(something)
问题答案:
我之前已经解决了这个问题,但这是一个简短的示例:
vec=np.arange(2*2*2*3).reshape(2,2,2,3)
it=np.ndindex(2,2,2)
for i in it:
print(vec[i])
生产:
[0 1 2]
[3 4 5]
[6 7 8]
[ 9 10 11]
[12 13 14]
[15 16 17]
[18 19 20]
[21 22 23]
ndindex``multi-index
围绕您提供的大小(此处为(2,2,2)
)的虚拟数组构造一个迭代器,并将其与next
方法一起返回。
因此,您可以ndindex
按原样使用,也可以将其用作构建on的模型nditer
。