【问题标题】:How to get result from for loop in each step?如何在每个步骤中从 for 循环中获取结果?
【发布时间】:2019-04-19 17:57:38
【问题描述】:

我想从 for 循环中的每个步骤获取结果,并将每个步骤的每个结果放在不同的数组中。 . 任何人都可以帮忙吗?这是我的程序的最小部分。

for i in range(3):

    a = np.array(cos(i))

print (a)

【问题讨论】:

  • 但是问题是什么?
  • 顺便说一句,您每次迭代都会覆盖a。能否请您出示包含您的问题细节的minimal reproducible example
  • 这是最小的。例如,我想在不同的数组中获得每个步骤的结果。 array1 中的步骤 1 和数组 2 中的步骤 2 的结果,如下所示。 for i in range(3): a = np.array(cos(i))
  • @m.seydi 动态数量的变量几乎从来都不是一个好主意。您应该使用列表或字典。

标签: python python-3.x python-2.7 numpy for-loop


【解决方案1】:

每次通过循环,您都可以附加到列表中,然后访问所有值。

result_list = []

stiffness_matrix_total = np.zeros((2*nnode,2*nnode), dtype=np.float)
for i in range(nele): 
    ele_stiff_mat = np.zeros((2*nnode,2*nnode), dtype=np.float)
    a = np.array([[cos[i,0]**2,sin[i,0]*cos[i,0],-(cos[i,0]**2),-cos[i,0]*sin[i,0]],[cos[i,0]*sin[i,0],sin[i,0]**2,-cos[i,0]*sin[i,0],-(sin[i,0]**2)],[-cos[i,0]**2,-sin[i,0]*cos[i,0],cos[i,0]**2,cos[i,0]*sin[i,0]],[-cos[i,0]*sin[i,0],-(sin[i,0]**2),cos[i,0]*sin[i,0],sin[i,0]**2]])

    result_list.append(a)

print (result_list)

【讨论】:

    【解决方案2】:

    有两种快速的方法可以做到这一点。通过将它们附加到空列表 arr_list 中,如下所示:

    n=3
    arr_list=[]
    
    for i in range(n):
        arr_list.append(np.array(cos(i)))
    
    # Here you will have List of Arrays arr_list=[a1, a2, a3]
    

    或通过 exec 命令将它们分配给一个命名数组,这样您最后就会有一组 a1..an 数组。但是,仅当您的 n 非常小时才建议这样做。

    n=3   
    
    for i in range(n):
       exec("a%s = np.array(cos(i))" %i)
    
    # Here you will have a1, a2, a3
    

    【讨论】:

      【解决方案3】:
      array_list = [[] for i in range(3)]
      
      for i in range(3):
        array_list[i] = np.array(np.cos(i))
      
      print (array_list)
      

      array_list 是您提供的数组列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-07
        • 2013-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多