我从Python开始,我对“ for”循环有一个基本问题 我有两个包含相同变量值的数组:
A = data_lac[:,0]
在第一个数组中,我有area值,在第二个数组中,我有平均深度值。 我想找到一种自动使用不同参数值进行计算的方法。等式如下:
g= (np.sqrt(A/pi))/n
在这里,我可以为每一行计算“ g”。现在,我想要一个具有“ n”的不同值的循环。我是这样做的:
i=0
while i <= len(A)-1:
for n in range(2,6):
g[i] = (np.sqrt(A[i]/pi))/n
i += 1
break
在这种情况下,我只有一列用于n = 2的计算,而没有下一列。我试图在数组中添加第二个维度,但是出现一条错误消息,提示我数组索引过多。
另外,我想要这个数组:
g[len(A),5]
g有5列,每列用不同的“ n”计算
任何提示都将非常有帮助, 谢谢
代码更新:
data_lac=np.zeros((106,7))
data_lac[:,0:2]=np.loadtxt("/home...", delimiter=';', skiprows=1, usecols=(0,1))
data_lac[:,1]=data_lac[:,1]*0.001
#Initialisation
A = data_lac[:,0]
#example for A with 4 elements
A=[2.1, 32.0, 4.6, 25]
g = np.zeros((len(A),))
答案 0 :(得分:1)
我相信您在两个循环中共享索引。您正在内部for循环(其索引为n)中增加i(上部while循环的索引)。
我想您有一个A(1个暗淡数组),并且您想生成G(2个暗淡数组),大小为(Len(A,5))
我不确定我是否完全理解您的要求输出,但我相信您需要类似的东西:
i=0
while i <= len(A)-1:
for n in range(2,6):
g[i][n-2] = (np.sqrt(A[i]/pi))/n # n-2 is to get first index as 0 and last as 4
i += 1 # notice the increace of the i is for the upper while loop
break
重要-请记住,在python中 indentation 意味着很多->因此,请确保i +=1
在while范围内,并且不要将其缩进循环
注意-G定义应为:
g = np.zeros((len(A),4), dtype=float)
您定义它的方式(没有4)导致它是1个暗淡数组而不是2个暗淡