问题描述
使用 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 (将#修改为@)