数据处理(3.0)-python 动态新建变量与动态调用动态变量

为了实现全自动数据处理,但数据的维度又在不断的改变,为了不用每次操心修改代码,会使用到动态新建变量和动态调用动态变量,但网上的资料很含糊,或者不好用,被逼无奈写了本篇文章

一、 动态创建动态变量

1. locals()

调用该函数

names = locals()

新建变量

names['ReImf' + str(0)] = 2

在这之后,就可以直接使用 ReImf0 或者变量,这里我们可以将 0 这个数变成一个变量值,来动态新建变量

for i in range(len(imfs)):
      # print(i) 0 12
      # 动态生成变量
      names['ReImf' + str(i)] = imfs[i]

2. exec()

新建变量

exec("ReImf{} = 2".format(0))

循环新建变量

for i in len_Re:
    exec("ReImf{} = 2".format(i))

二、 动态调用动态变量

首先我们先理解一下 exec  ,

exec 的意思我认为是把 exec(" ") ,双引号中间的内容当作代码来运行

这样的话,我们就很容易理解该怎么动态的调用我们的变量

        # 返回瞬时频率,计算每个 imf 对应的瞬时频率,并确定时间范围
        t = np.arange(0,length)
        # 动态方法
        for i in len_Re:
            # print("i:",i)

            exec("names['instf'+str(i)],names['timestamps'+str(i)] =tftb.processing.inst_freq(ReImf{}  ,t)".format(i))



        # 动态拼接所有瞬时频率
        for i in len_Re:
            # 0 12
            if i == 0 or i == 1:
                result = np.array([instf0, instf1])
            else:
                result = np.vstack([result, names.get('instf' + str(i))])

从上门我们可以看出

定义新的动态变量使用 locals(),调用的话使用 exec ,需要主要得有以下一点:

exec 要包含整句,包含names 部分,且不能出现空格导致缩进问题

你可能感兴趣的:(数据处理)