所以我有一堆numpy数组,它们的名称(作为字符串)在列表中:
mylist = ['arr1','arr2',....]
我都想用np.save保存它们。我尝试过的:
for avar in mylist:
np.save(avar+'.npy', exec(avar))
有效吗? IDK,至少没有错误,但是,稍后加载时,它将引发此错误:
ValueError:allow_pickle = False时无法加载对象数组
如果您以后向我展示如何将它们加载到相同的变量名,那将是很好的选择。
答案 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' )