使用numpy.ndenumerate
时,会为C-contiguous
数组顺序返回索引,例如:
import numpy as np
a = np.array([[11, 12],
[21, 22],
[31, 32]])
for (i,j),v in np.ndenumerate(a):
print i, j, v
如果order
中的a
为'F'
或'C'
,则无效:
0 0 11
0 1 12
1 0 21
1 1 22
2 0 31
2 1 32
在numpy
{@ 1}}中是否有任何内置迭代器可以提供此功能(在数组ndenumerate
之后):
order='F'
答案 0 :(得分:4)
您可以使用np.nditer
执行以下操作:
it = np.nditer(a, flags=['multi_index'], order='F')
while not it.finished:
print it.multi_index, it[0]
it.iternext()
np.nditer
是一个非常强大的野兽,它暴露了Python中的一些内部C迭代器,请查看文档中的Iterating Over Arrays。
答案 1 :(得分:3)
只要进行转置会给你你想要的东西:
a = np.array([[11, 12],
[21, 22],
[31, 32]])
for (i,j),v in np.ndenumerate(a.T):
print j, i, v
结果:
0 0 11
1 0 21
2 0 31
0 1 12
1 1 22
2 1 32