python - python - 为什么从matlab中获取的矩阵形式在读取到python时会发生变化
问题描述
我从matlab保存了一个-v7.3版本的大文件,当用python读取它时,矩阵的形状发生了变化!这正常吗?
例如,让我们在 MATLAB 中有以下矩阵,
clear all, clcl
A = randn(10,3) + randn(10,3)*i;
save('example.mat','-v7.3'); %% The saved file is example.mat with version 7.3
上面,保存的文件是 example.mat 一个大小为 (10,3) 的矩阵
所以,让我们去 python 读取那个文件:
import numpy as np
import h5py as h5
data_try = h5.File('example.mat', 'r')
A = np.array(data_try)
A = A.view(np.complex) #here the matrix equivalent to that one in matlab
但我发现 python 中的 A 大小为 (3,10) !而且当具有三维矩阵时,形状也在变化!
python读取来自matlab的矩阵转置是正常的吗??!!或发生了错误!
但是,当使用以下其他方式时:
import scipy.io as spio
Data = spio.loadmat('example.mat', squeeze_me=True)
A = Data[‘A’]
在那种情况下,一切都很好,但不幸的是我们不能将这种方式用于大矩阵!
请问,这个问题有什么解决方案吗?
解决方案
您可能会在 Matlab(列主要)和 Numpy(行主要)中遇到不同内存对齐的问题...检查例如此问题以进行相关讨论和解决方案(以 Fortran 样式进行重塑,这也是列主要) .
SciPy 的.mat
界面会自动处理这种重新解释,这就是您在使用它时不会遇到问题的原因。
推荐阅读
- php - 在 jquery ajax 之后使用 group_concat_max_len 时出现问题
- c# - 注册成功后如何使按钮可见?
- query-performance - SnowFlake 存储过程多线程
- asp.net-core - RazorPages IViewLocationExpander 等效项
- dns - 如何使用 CNAME 记录将我的域名链接到 infinityfree?
- linux - 使用期望自动文件传输的 sftp 不起作用
- javascript - Angular/jest window._satellite.track 无法跟踪未定义类型
- javascript - 我收到“未捕获的 TypeError:无法读取属性 'addEventListener' of null”,不太清楚为什么
- jenkins - Jenkins X:尝试从非需求仓库执行“jx boot”
- wordpress - Woocommerce 条纹客人结帐不起作用