如何迭代Numpy数组的初始维度?

时间:2015-02-25 18:42:50

标签: python arrays numpy

我有一个形状为[1000, 1000, 1000, 3]的Numpy数组,最后一个尺寸为3,包含三维空间矢量组件的三元组。如何使用nditer迭代每个三元组?像这样:

 for vec in np.nditer(my_array, op_flags=['writeonly', <???>]):
     vec = np.array(something)

1 个答案:

答案 0 :(得分:1)

我之前已经解决了这个问题,但这只是一个简短的例子:

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的模型。