我有一个形状为[1000, 1000, 1000, 3]
的Numpy数组,最后一个尺寸为3,包含三维空间矢量组件的三元组。如何使用nditer
迭代每个三元组?像这样:
for vec in np.nditer(my_array, op_flags=['writeonly', <???>]):
vec = np.array(something)
答案 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
的模型。