本文主要介绍python中的变量(list, dict, ndarray 类型)怎么保存为.mat文件( matlab 使用)
方法:使用scipy库中的scipy.io.savemat(savePath, maydict={…})函数
import scipy.io
import ...
...
...
...
#假设你要保存的变量为 bData and aData
#将bData 和 aData保存到result.mat中
scipy.io.savemat('result.mat', mdict={'bData': bData, 'aData': aData,})
#此时result.mat包含一个cell,内容是名为'bData'和'aData'的struct
python中的变量(list , dict , ndarray类型)保存为.mat文件时,变量类型的对应关系
- list —>cell (list内容为 dict 或 ndarray)
- dict—>struct 若dict内容为list,且每个list长度不一,那么保存时会发生错误,为了避免该类错误,需要将list转换为ndarray。
- list—>mat矩阵(list内容为字符串或数值)a.若list内容为字符串+数值或都为字符串,在保存时,将数值型数据转换为字符串,a1.若list第一个元素为数值型数据,此时mat矩阵的列数为list[i]最长的长度(若list[i]最长的长度小于11则mat矩阵的列数为11),其他长度不足的补空格,所以一般都将list转换为ndarray再保存;a2.若list第一个元素为字符串,此时mat矩阵的列数为list[i]最长的长度,其他长度不足的补空格。b.若list内容为纯数值,则保存的mat矩阵元素为数值。对于a1情况会报警告: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use
arr[tuple(seq)]
instead ofarr[seq]
. In the future this will be interpreted as an array index,arr[np.array(seq)]
, which will result either in an error or a different result.
arr[empties] = ’ ’ - ndarray—>mat矩阵或cell(ndarray元素数据类型不同)。
注:
- list(a变量)转ndarray(b变量)方法
若list元素数据类型一样:b = numpy.array(a)
若list元素数据类型不一样:b=numpy.array(a, dtype=object)