Python 将密钥为npz的数据保存

Python 将密钥为npz的数据保存,python,numpy,Python,Numpy,我有一个矩阵a,我需要将它保存为npz文件,用高度键标记。我该怎么做 要将随机矩阵保存为npz,我使用以下代码: import numpy as np Test_matrix = np.random.rand(10,10) np.savez('Matrix.npz', Test_matrix) 但如果我加载文件并查找高度,则什么也找不到: M = np.load('Matrix.npz') MM = M['height'].reshape(512,512) 给出错误“height不是存档中的

我有一个矩阵
a
,我需要将它保存为
npz
文件,用
高度
键标记。我该怎么做

要将随机矩阵保存为
npz
,我使用以下代码:

import numpy as np
Test_matrix = np.random.rand(10,10)
np.savez('Matrix.npz', Test_matrix)
但如果我加载文件并查找
高度
,则什么也找不到:

M = np.load('Matrix.npz')
MM = M['height'].reshape(512,512)

给出错误“height不是存档中的文件”

正如注释所说,您从未告诉savez您想将其称为“height”。您可以通过将密钥作为
**kwds
传递来保存密钥。如果您在使用任何给定函数时遇到问题,请确保为其指定一个函数

此外,您无法将
(10,10)
重塑为
(512512)
,因此我在此处修复了此问题:

import numpy as np
Test_matrix = np.random.rand(512,512)
np.savez('Matrix.npz', height=Test_matrix)
M = np.load('Matrix.npz')
MM = M['height'].reshape(512,512)
print(MM.shape)
(512, 512)

编辑:为了根据您的评论进行澄清,您传递给
savez
的关键字不必与对象的名称匹配。我上面所做的方式应该适合您。

保存时,您从未在
Test\u矩阵中引用
height
。保存时它只是一个数组。当没有提供dict时,默认键为“arr_0”。“height”与
Test_matrix
有什么关系?@hpaulj
height
在另一个脚本中用作关键字,这有点难以更改。@JayMody更改键的最佳方法是什么?