Python中将数组保存成.mat文件,AttributeError: ‘numpy.ndarray‘ object has no attribute ‘items‘

一、语法

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')

二、保存savemat

2.1 例子:

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数组

2.2 AttributeError: 'numpy.ndarray' object has no attribute 'items'

出现的原因就是因为没有对要存储的数据起名字

例子:下面这段程序会报错: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)

三、读取数据loadmat

例子:注意的是,加载的数据不只是数据,还有一些文件说明信息,所以需要进一步提取内部的数据

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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值