Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用字典中与numpy.savez一起定义的名称和值_Python - Fatal编程技术网

Python 使用字典中与numpy.savez一起定义的名称和值

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(

我正在努力解决以下问题:给定一个以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((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)