将Python.npz另存为MATLAB.mat文件

将Python.npz另存为MATLAB.mat文件,python,matlab,scipy,Python,Matlab,Scipy,我有一个.npz文件,我想将其另存为.mat文件 文件A.npz包含A['arr\u 0','arr\u 1','arr\u 2'] 目前,我正在使用以下方法分别保存每个文件: import scipy.io as sio a1 = A['arr_0'] sio.savemat('a1.mat', mdict={'a1': a1} 对于A.npz内的每个arr_i 是否有简单的方法将所有内容保存到.mat(即通过单元格格式)中?或者我应该创建一个脚本,以类似循环的方式保存它们吗?创建一个npz

我有一个
.npz
文件,我想将其另存为
.mat
文件

文件
A.npz
包含
A['arr\u 0','arr\u 1','arr\u 2']

目前,我正在使用以下方法分别保存每个文件:

import scipy.io as sio
a1 = A['arr_0']
sio.savemat('a1.mat', mdict={'a1': a1}
对于
A.npz
内的每个
arr_i


是否有简单的方法将所有内容保存到
.mat
(即通过单元格格式)中?或者我应该创建一个脚本,以类似循环的方式保存它们吗?

创建一个
npz

In [147]: np.savez('test.npz',x=np.arange(3),y=np.ones((3,3)),z=np.array(3))
负荷<代码>数据是文件/变量的字典;按索引加载:

In [148]: data = np.load('test.npz')
In [149]: list(data.keys())
Out[149]: ['z', 'y', 'x']
In [150]: data['x']
Out[150]: array([0, 1, 2])
将类似的词典保存到.mat:

In [151]: io.savemat('a1.mat', mdict={'x':data['x'],'y':data['y'],'z':data['z']})
In [152]: io.loadmat('a1.mat')
Out[152]: 
{'__globals__': [],
 '__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Thu Feb 15 09:52:42 2018',
 '__version__': '1.0',
 'x': array([[0, 1, 2]]),
 'y': array([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]]),
 'z': array([[3]])}
备选结构:

io.savemat('a1.mat', mdict={key:data[key] for key in data.keys()})
甚至:

io.savemat('a1.mat', mdict=data)

因为
数据
是一个字典。

shell脚本的一行代码,等等:

python -c "import pylab, scipy.io; scipy.io.savemat('tmp.mat', pylab.np.load('tmp.npz'))"

鉴于您提供了这两个选项,我认为您已经尝试了这两个选项,因此您知道哪一个对您的用例更快和/或更好。那么,您的问题是什么?是否有一个简单的命令可以将整个
a.npz
数据集保存到单个
.mat
文件中,而无需执行循环脚本?对不起,我想我说得很清楚。我是Python新手,所以我不确定我是否缺少一些基本的东西。这很不幸。我们帮助解决具体的编程问题,而不是设计问题或文档请求(归根结底就是这些)。感谢您的帮助。您需要将每个数组从
npz
加载到memeory中(
npz
是一个延迟加载程序)。然后您可以将所有数组作为多项字典保存到
mat
。看起来
load
字典可以直接传递到
loadmat