如何保存其名称(作为字符串)给出的变量列表?

时间:2019-07-03 02:45:32

标签: python numpy

所以我有一堆numpy数组,它们的名称(作为字符串)在列表中:

mylist = ['arr1','arr2',....]

我都想用np.save保存它们。我尝试过的:

for avar in mylist:
    np.save(avar+'.npy', exec(avar))

有效吗? IDK,至少没有错误,但是,稍后加载时,它将引发此错误:

  

ValueError:allow_pickle = False时无法加载对象数组

如果您以后向我展示如何将它们加载到相同的变量名,那将是很好的选择。

2 个答案:

答案 0 :(得分:1)

如果所有变量都是局部变量,则可以

vars = locals()
for astring in mylist:
    np.save(astring + '.npy', vars[astring])

如果您还具有一些全局变量,请这样做

vars = globals()

@Alex,如果您的变量名来自网络或外部文件,则冒着用exec执行任意代码的风险。

答案 1 :(得分:0)

我想我明白了,

for astring in mylist:
    exec('tmp = ' + astring )
    np.save(astring + '.npy', tmp)

还原时:

for astring in mylist:
    tmp = np.load(astring + '.npy')
    exec(astring ' =  tmp' )