假设我有一个任意的N阶可变数组。例如: A是一个2x3x3数组,它是一个三阶数组,沿它的三个索引有2、3和3个维数。你知道吗
我想有效地循环每个元素。如果我事先知道顺序,那么我就可以做一些类似的事情(在python中)
#for order 3
import numpy as np
shape = np.shape(A)
i = 0
while i < shape[0]:
j = 0
while j < shape[1]:
k = 0
while k < shape[2]:
#code using i,j,k
k += 1
j += 1
i += 1
现在假设我不知道A的顺序,也就是说,我不知道shape
的长度。如何在数组的所有元素中以最快的速度排列?你知道吗
我认为选择在第一个索引上排列哪个索引、在第二个索引上排列哪个索引等都无关紧要,因为最内部的while语句总是在
i
、j
和k
的每个组合中执行一次。你知道吗如果您需要保留操作的结果(并假设它是a和i,j,k的函数),您可能希望使用以下内容:
然后可以迭代结果,得到每个位置的位置并返回代码值。或者,如果需要多次访问结果,请将生成器表达式转换为列表。你知道吗
有很多方法可以做到这一点,例如迭代
a.ravel()
或a.flat
。但是,在Python循环中遍历数组的每个元素永远不会特别有效。你知道吗相关问题 更多 >
编程相关推荐