如何解决Scipy savemat / loadmat - 如何保留一维数组与长度为 1 维的二维数组
使用 scipy.io.savemat 和 scipy.io.loadmat 保存和加载不区分一维 numpy 数组和一个长度为 1 维的二维 numpy 数组。
在下面的示例中,如何让 a1 与 a 具有相同的形状,而 b1 与 b 具有相同的形状?
import numpy as np
from scipy import io
a = np.array([1,2,3])
b = np.array([[1],[2],[3]])
c = np.array([[1,10],[2,20],[3,30]])
print(f'a: {a.shape}')
print(f'b: {b.shape}')
print(f'c: {c.shape}')
io.savemat('test.mat',{'a': a,'b': b,'c': c},appendmat = False,oned_as='row')
##################################################################################
loadedData = io.loadmat('test.mat',squeeze_me = False)
a1 = loadedData['a']
b1 = loadedData['b']
c1 = loadedData['c']
print(f'a1: {a1.shape}')
print(f'b1: {b1.shape}')
print(f'c1: {c1.shape}')
预期结果:
a: (3,)
b: (3,1)
c: (3,2)
a1: (3,)
b1: (3,1)
c1: (3,2)
实际结果:
a: (3,2)
a1: (1,3)
b1: (3,2)
什么不起作用?
我已经尝试了“oned_as”、“squeeze_me”、“struct_as_record”和“matlab_compatible”参数的所有排列。更改“oned_as”会在 (1,3) 和 (3,1) 之间切换 a1。打开“squeeze_me”修复 a1,但导致 b1 具有形状 (3,)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。