Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用numpy数组在循环中索引顺序_Python_Arrays_Loops_Numpy - Fatal编程技术网

Python 使用numpy数组在循环中索引顺序

Python 使用numpy数组在循环中索引顺序,python,arrays,loops,numpy,Python,Arrays,Loops,Numpy,在一个numpy数组中进行几个循环是否有一个特定的顺序以实现快速?我的意思是,设为AA=A(I,j,k)的numpy数组 如果我必须做循环,我应该按什么顺序做for序列? 谢谢您是在所有维度上循环,还是只在一个维度上循环 for aa in A: print(aa) 迭代第1维 e、 g 您可以通过索引在其他维度上进行迭代 In [482]: for j in range(4): .....: print(A[:,j]) .....: [0 4 8] [1

在一个numpy数组中进行几个循环是否有一个特定的顺序以实现快速?我的意思是,设为
A
A=A(I,j,k)的numpy数组

如果我必须做循环,我应该按什么顺序做for序列?
谢谢

您是在所有维度上循环,还是只在一个维度上循环

for aa in A:
   print(aa)
迭代第1维

e、 g

您可以通过索引在其他维度上进行迭代

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]

无论嵌套循环的顺序如何,都将非常慢。

如果在Python中的NumPy数组上循环,那么您已经失败了。在
NumPy
中保持快速的诀窍是使用
NumPy
的向量化操作,尽可能少地循环。如果您发布一些示例代码,人们可能会向您展示如何做到这一点。
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]