【问题标题】:how to create an array from separate variables using a loop in Python?如何使用 Python 中的循环从单独的变量创建数组?
【发布时间】:2020-09-08 11:07:13
【问题描述】:

我有大约 130 个包含数值的不同变量 变量类似于ratio70, ratio71, ratio72,...ratio220。 因此,变量从70 运行到220,我想从中创建一个数组,以便我可以进一步使用这个数组来绘制图表 我试过了

    ratioarr= (np.array(ratio%i) for i in range (70,220))

但这也不起作用。我不想输入所有变量名来形成数组。有没有更简单的方法?

【问题讨论】:

  • 为什么会有这么多变量?是否有更好的方法来首先构建数据?
  • 这些变量是在对数百条谱线进行高斯拟合(在天文学中)然后计算高斯曲线下的面积后形成的。所以每个变量都是单独创建的

标签: python arrays loops


【解决方案1】:

您可以使用eval() 随时随地动态生成变量名称:

print([eval('ratio' + str(i)) for i in range(70, 221)])

【讨论】:

    【解决方案2】:

    您可以使用 locals() 或 globals() 字典,它们分别包含本地和全局范围内的所有变量。 所以可能是这样的:

    ratioarr = np.array([locals()["ratio" + str(i)] for i in range (70,220)])
    

    【讨论】:

      【解决方案3】:

      您可以在循环中使用 exec 函数来创建这样的数组

      ratioarr = list()
      for x in range(70,220):
          exec(f"ratioarr.append(ratio{x})")
      

      【讨论】:

        猜你喜欢
        • 2014-01-24
        • 2013-11-22
        • 1970-01-01
        • 2018-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多