python - 使用字典中定义的名称值与 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
解决方案
如果我对您的理解正确,您应该尝试以下内容: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)
推荐阅读
- java - Java Scanner 一遍又一遍地读取同一个文件
- java - 禁用 javaFX 中的按钮并再次启用它
- reactjs - 从数组元素渲染 React 组件
- azure-sql-database - Azure 数据工厂复制活动 - 尽管不成功,但不会失败
- apache - 有没有一种快速检测重定向的方法?
- python-3.x - 如何将 Data Lake Gen 1 中的数据连接到 Tableau
- hyperlink - React Table - 在新标签中打开?
- list - Dart:实现 fromJson 函数的泛型类列表
- sql - 如何更新 SQL 表以去除 9 个字符串中的左侧 3 个字符?
- c# - Winforms - 丢弃不需要的双击