通过在范围的末尾添加数字来创建多个变量

这是我在该论坛上的第一篇帖子,希望大家一切顺利。我是python的新手,目前正在使用它进行天文学项目的数据分析。我已经使用numpy加载了8个.dat文件,每个文件包含每个星系的多个周期值。

logp1,m_1 =np.loadtxt('hst_gal1_cepheids.dat',\
        unpack=True, \
        usecols=(1,2), \
        dtype=float)
logp2,m_2 =np.loadtxt('hst_gal2_cepheids.dat',\
        unpack=True, \
        usecols=(1,2), \
        dtype=float)`
  `

等等...

我必须使用公式M_(n)= slope * logp(n)+ incept(变量斜率和incept之前已定义)。我最初是这样做的

M_2=slope*logp2+incpt
M_3=slope*logp3+incpt

但是,这似乎很漫长而混乱。我尝试使用

`for i in range(1,8):
 def func(slope,incept,logpi:
          return M_[i]=slope*logp[i]+incpt`

创建从1到8的多个X变量,它们对应于正确的星系,但是返回后语法无效。 我也尝试使用.append

M_.append(str[i])=slope*logp.append(i)+incept`

但这也给了我一个错误“无法分配给函数调用” 很抱歉,如果这看起来是非常新手的代码,但是对于编码并尝试掌握它来说是新手。 任何形式的帮助将不胜感激。 非常喜欢。

评论
  • qquas
    qquas 回复

    我可以建议使用字典结构,如下所示:

    M_parameters = {}
    
    for i in range(1,8):
            M_parameters[f"M_{i}"]=slope*logp[i]+incpt
    

    然后您可以像这样从dict中获取参数:

    M_parameters[M_1]
    

    要么

    M_parameters.get(M_1, None) # Get if exists, if not return None