使用numpy.savez在字典中定义的名称-值

我正在努力解决以下问题:例如,给定一个以numpy数组作为值的字典a={'xarray':np.ones((2,2))},我想用字典关键字的名称将数组保存到npz文件中:

np.savez('test.npz',a.keys()=a['xarray'])

错误是在a.keys

SyntaxError: keyword can't be an expression.

我需要以某种方式将密钥转换为表达式。我尝试使用eval函数,但未成功。

谢谢,米哈伊尔

编辑:

为了澄清问题,我希望结果等同于以下内容:

np.savez('test.npz', xarray = np.ones((2,2)))

我的数组的名称在字典的第一个键中指定,而数组本身在第一个值:中a={'xarray':np.ones((2,2))}

尝试:np.savez('test.npz',format(list(a.keys())[0])=list(a.values())[0])再次返回SyntaxError: keyword can't be an expression


HUH函数
浏览 181回答 1
1回答

潇潇雨雨

如果我对您的理解正确,则应该尝试执行以下操作:np.savez('{}.npz'.format(list(a.keys())[0]))。这会将文件名设置为给定字典中的第一个键。由于尝试a.keys()将其值设置为a['xarray']表达式,所以您得到的错误是正确的。而且,据我所知,python将不允许这样做。编辑: 我只是在讲完np.savez函数的功能之后,我误会了你。因此,正确的做法(如果现在正确的话)是:kwargs = {key: a[key] for key in a.keys()}np.savez('test.npz', **kwargs)请尝试说出这是否是您想要的:)编辑2: 仅具有第一个键:kwargs = {key: a[key] for key in [list(a.keys())[0]]}np.savez('test.npz', **kwargs)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python