为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUH函数 2021-05-14 17:06:26
我正在努力解决以下问题:例如,给定一个以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
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

如果我对您的理解正确,则应该尝试执行以下操作: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)


查看完整回答
反对 回复 2021-05-25
  • 1 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号