如何迭代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