適應我的答案在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