我希望能够对一组名称列在数组中的变量做一些事情,例如:
import numpy as np
Nsim=100
for vec in ['lgx1','lgx2','lgx3']: vec=np.random.uniform(low=0.0, high=1.0, size=Nsim)
这实际上并没有产生编译错误,但它似乎也没有做我想做的事情(即,没有统一设置名为lgx1,lgx2和lgx3的三个数组绘制变量)。这比为每个阵列设置一个这样的命令更紧凑。有什么建议?对于我们这些仍然在说SuperMongo的人,我正在寻找
的python模拟foreach vec {lgx1 lgx2 lgx3} {set $vec=random(100)}
非常感谢!
答案 0 :(得分:4)
不要尝试使用从变量构造的变量名。相反,使用字典:
import numpy as np
Nsim=100
arrays = {}
for vec in ['lgx1','lgx2','lgx3']:
arrays[vec] = np.random.uniform(low=0.0, high=1.0, size=Nsim)
现在你有arrays['lgx1']
等等。
或者,因为看起来你正在改变你的名字"只需一个数字,只需使用一个列表:
lgx = []
for _ in range(3):
lgx.append(np.random.uniform(low=0.0, high=1.0, size=Nsim))
您的数组现在是lgx[0]
,lgx[1]
和lgx[2]
。
这也可以作为列表理解在单个语句中编写:
lgx = [np.random.uniform(low=0.0, high=1.0, size=Nsim) for _ in range(3)]
无论哪种方式,现在可以很容易地将数组作为一个组来使用。