Python 使用字典中与numpy.savez一起定义的名称和值
我正在努力解决以下问题:给定一个以numpy数组作为值的字典,例如,Python 使用字典中与numpy.savez一起定义的名称和值,python,Python,我正在努力解决以下问题:给定一个以numpy数组作为值的字典,例如,a={'xarray':np.ones((2,2))},我想用字典键中的名称将数组保存到npz文件中: np.savez('test.npz',a.keys()=a['xarray']) 错误出现在a.keys: 我需要以某种方式将密钥转换为表达式。我尝试使用eval函数,但没有成功 谢谢, 米哈伊尔 编辑: 为了澄清问题,我希望结果等同于以下内容: np.savez('test.npz', xarray = np.ones(
a={'xarray':np.ones((2,2))}
,我想用字典键中的名称将数组保存到npz文件中:
np.savez('test.npz',a.keys()=a['xarray'])
错误出现在a.keys
:
我需要以某种方式将密钥转换为表达式。我尝试使用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不能是表达式
如果我理解正确,您应该尝试以下行: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)
如果字典中有不止一个键呢?那么,我想选择使用哪一个键。假设我想使用第一个键(并保存相应的numpy数组,这是第一个值),很抱歉造成混淆。我不关心文件名,但我关心保存的数组的名称:它应该具有由第一个键指定的名称。请参见我的问题的编辑。我很高兴听到:)
kwargs = {key: a[key] for key in [list(a.keys())[0]]}
np.savez('test.npz', **kwargs)