Python保存数组的方式有很多种,如savetxt,但这个函数只能保存一维或二维数组。为了保存高维数组,同时能够在matlab载入,可以使用scipy.io.savemat()函数,例子:
import numpy as np
import scipy.io as sio
A = np.array([[[1, 2], [3, 4]],[[5, 6], [7, 8]]])
print A
print A.shape
sio.savemat('data.mat', {"foo":A})
得到输出:
在matlab中导入该数组:
>>load('data.mat')
可以看到,matlab与Python对矩阵的保存上有一定的变换,从Python到matlab为:’页’->’行’,’行’->’列’,’列’->’页’,即在Python中的矩阵形状为
3×4×5
,在matlab中变为
5×3×4
。
另外,在Python中如果保存成.mat文件时代码为:sio.savemat('data.mat', A)
,则会报错AttributeError: 'numpy.ndarray' object has no attribute 'items'