适应我的答案在shallow iteration with nditer, nditer
和ndindex
可用于迭代行或列通过生成索引。
In [19]: n,m=3,4
In [20]: a=np.arange(n*m).reshape(n,m)
In [21]: b=np.arange(m)
In [22]: it=np.nditer(b)
In [23]: for i in it: print a[:,i],b[i]
[0 4 8] 0
[1 5 9] 1
[ 2 6 10] 2
[ 3 7 11] 3
In [24]: for i in np.ndindex(m):print a[:,i],b[i]
[[0]
[4]
[8]] 0
[[1]
[5]
[9]] 1
[[ 2]
[ 6]
[10]] 2
[[ 3]
[ 7]
[11]] 3
In [25]:
ndindex
使用像一个迭代器:it = np.nditer(b, flags=['multi_index']
。
对于像这样的单个维度的迭代,for i in range(m):
也适用。
也从另一个线程,这是一个使用order
没有指标迭代一招:
In [28]: for i,j in np.nditer([a,b],order='F',flags=['external_loop']):
print i,j
[0 4 8] [0 0 0]
[1 5 9] [1 1 1]
[ 2 6 10] [2 2 2]
[ 3 7 11] [3 3 3]
这是最Python的答案。 'np.nditer'可能更强大,但是更加丑陋。例如,您必须回顾C和Fortran排序之间的区别。 – cxrodgers 2014-09-21 21:27:00