Python 3.x python中图像矩阵的异常维数顺序

Python 3.x python中图像矩阵的异常维数顺序,python-3.x,matlab,Python 3.x,Matlab,我下载了一个数据集,其中包含一个名为“depts.mat”的MATLAB文件,其中包含一个尺寸为480 x 640 x 1449的三维矩阵。这些实际上是1449幅图像,每个图像的尺寸为640 x 480。我使用scipy库成功地将其加载到python中,但问题是维度的顺序不同寻常。这使得Python认为有480个尺寸为640x1449的图像。我试图用python重塑矩阵,但一个简单的重塑操作并没有解决我的问题 欢迎提出任何建议。谢谢。你误解了。你不想重塑,你想转置它。在MATLAB中,数组是A(

我下载了一个数据集,其中包含一个名为“depts.mat”的MATLAB文件,其中包含一个尺寸为480 x 640 x 1449的三维矩阵。这些实际上是1449幅图像,每个图像的尺寸为640 x 480。我使用scipy库成功地将其加载到python中,但问题是维度的顺序不同寻常。这使得Python认为有480个尺寸为640x1449的图像。我试图用python重塑矩阵,但一个简单的重塑操作并没有解决我的问题


欢迎提出任何建议。谢谢。

你误解了。你不想重塑,你想转置它。在MATLAB中,数组是
A(x,y,z)
,而在python中,数组是
P[z,y,x]
。确保加载整个矩阵后,更改第一个和最后一个维度


您可以使用
swapaxes
函数执行此操作,但要小心!它不复制也不更改数据,只更改
nparray
的更高级别索引访问内部内存的方式。如果你有足够的内存,你最好的机会就是复制一个副本并转储原始文件

你误解了。你不想重塑,你想转置它。在MATLAB中,数组是
A(x,y,z)
,而在python中,数组是
P[z,y,x]
。确保加载整个矩阵后,更改第一个和最后一个维度


您可以使用
swapaxes
函数执行此操作,但要小心!它不复制也不更改数据,只更改
nparray
的更高级别索引访问内部内存的方式。如果你有足够的内存,你最好的机会就是复制一个副本并转储原始文件

也许你可以用一个合适的straregy访问每个图像?@Marcresk你能详细说明一下如何访问吗?因为从我所看到的,它们看起来就像是这些维度上的随机数。比如说,我不知道这些数字中哪一个是属于1号图像的。也许你可以用一个合适的straregy访问每一张图像?@Marcresk,你能详细说明一下吗?因为从我所看到的,它们看起来就像是这些维度上的随机数。比如说,我无法准确地找出这些数字中的哪一个属于图像编号1。不过,MATLAB索引是
(y,x,z)
:pMATLAB索引是
(y,x,z)
P