在Python中是否可以迭代for循环,并且这种构造的代码是什么样的?
要清楚,这是我迭代for循环的意思:
for i in range(100):
for j in range(100):
for k in range(100):
...
for n in range(100):
print(i+j+k+...+n)
这是我想简化的一个具体示例:
data0=numpy.random.normal(0,1,100)
data1=numpy.random.normal(0,1,100)
data2=numpy.random.normal(0,1,100)
A=numpy.zeros(100*100*100)
for i in range(len(data0)):
for j in range(len(data1)):
for k in range(len(data2)):
A[i*len(data0)*len(data1)+j*len(data0)+k]=data[i]+data[j]+data[k]
有可能吗?
答案 0 :(得分:0)
看起来是在要求一种称为Loop Unrolling的优化。为此,您需要从最低的嵌套级别开始(可能是确定性的)查看优化。
在这种情况下,这是不可能的。通常,此循环在某种意义上相当于设置张量A[i,j,k] = d0[i]+d1[j]+d2[k];
的每个元素,这是一对多的操作。
但是,如果数据向量data0
,data1
和data2
中存在规则模式,则可以利用一些可能有用的启发式方法。不过,在这种情况下,您已经将它们设置为随机向量,因此没有关于组织或结构的基础假设有用。