scipy.io.loadmat(file_name, mdict=None, appendmat=True, **kwargs)
scipy.io.savemat(file_name, mdict, appendmat=True, format='5', long_field_names=False, do_compression=False, oned_as='row')
import numpy as np
from scipy import io
A = np.array([99, 98, 88])
B = np.array([80, 60, 70])
# A = A.tolist() # 先转换成列表,然后再存储,也是可以的
# B = B.tolist()
io.savemat('data.mat', {'score_of_tom': A, 'score_of_jerry': B})
# 注意:下句为错误写法:因为matlab中变量名中不能出现空格
io.savemat('data.mat', {'score of tom': A, 'score of jerry': B})
# data为matlab中的文件名,{}中一个变量对赢一个名字
# 在MATLAB中一个.mat文件下可以有多个变量,每个变量都有各自的名字,所以存N个变量要创建N个名字,类似于python中的字典
# 所以利用io保存的时候,需要指定变量的名字,比如{'score_of_tom': A}表示这个名字下存放的是A数组
出现的原因就是因为没有对要存储的数据起名字
例子:下面这段程序会报错:AttributeError: 'numpy.ndarray' object has no attribute 'items',因为在保存A的时候,没有给A起名字
import numpy as np
from scipy import io
A = np.array([99, 98, 88])
io.savemat('data.mat', A)
例子:注意的是,加载的数据不只是数据,还有一些文件说明信息,所以需要进一步提取内部的数据
from scipy import io
variables = io.loadmat('data.mat')
print("加载的数据不只只是数据,还有很多,即:")
print(variables)
print('内部变量为:')
print(variables['score_of_tom'])
print(variables['score_of_jerry'])
显示如下:
加载的数据不只只是数据,还有很多,即:
{'__header__': b'MATLAB 5.0 MAT-file Platform: nt,
Created on: Mon Apr 12 15:14:04 2021',
'__version__': '1.0',
'__globals__': [],
'score_of_tom': array([[99, 98, 88]]),
'score_of_jerry': array([[80, 60, 70]])}
内部变量为:
[[99 98 88]]
[[80 60 70]]
参考:
1、https://blog.csdn.net/Cheese_pop/article/details/77989865
2、https://blog.csdn.net/weixin_42809426/article/details/91490901