您是循环遍历所有维度,还是仅循环一个?
for aa in A:
print(aa)
迭代第一维
例如
In [479]: A=np.arange(12).reshape(3,4)
In [480]: A
Out[480]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [481]: for a in A:
.....: print(a)
.....:
[0 1 2 3]
[4 5 6 7]
[ 8 9 10 11]
您可以通过索引对其他维度进行迭代
In [482]: for j in range(4):
.....: print(A[:,j])
.....:
[0 4 8]
[1 5 9]
[ 2 6 10]
或转置:
In [483]: for a in A.T:
.....: print(a)
.....:
[0 4 8]
[1 5 9]
[ 2 6 10]
[ 3 7 11]
如果您遍历第一个维度而不是最后一个维度,则速度会略有优势。但我强调这是次要的。
最好完全避免循环,使用一次对整个数组进行操作的编译方法。相比之下,迭代要慢得多。
for i in range(A.shape[0]):
for j in range(A.shape[1]):
for k in range(A.shape[2]):
A[i,j,k]
无论嵌套循环的顺序如何,都会非常慢。