用循环填充ndarray的行和列

时间:2018-07-17 12:40:01

标签: arrays loops numpy for-loop

我从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),))

1 个答案:

答案 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个暗淡