为什么matplotlib imshow()会显示转置图像?

时间:2015-05-06 10:53:29

标签: python matlab numpy matplotlib theano

我有一个在matlab中创建的图像矩阵,我将用它作为我在theano编码的卷积神经网络的输入。我使用numpy.loadtxt导入矩阵,并且在检查时,矩阵看起来与在matlab中创建的矩阵相同。在matlab中使用imshow()时,我会更正显示图像,但是,使用matplotlib imshow()时,图像会被转置。有谁知道这个的原因?

matlab代码:

    img = dlmread('kthImagesCheck.txt');
    imshow(reshape(img(:,1), [104,104]))

matplotlib的代码:

    img = numpy.loadtxt("kthImagesCheck", delimiter = ",")
    imshow(reshape(img[:,0],[104,104])

我会发布图片,但我是新的stackoverflow,我还没有足够的声誉。

干杯,

1 个答案:

答案 0 :(得分:1)

Matlab和python有一种不同的方式将数组存储在内存中。 Matlab首先保存数组列,而python使用行优先方法 例如,考虑一个2乘2的矩阵

M = [1, 2
     3, 4]

在内存中,matlab将矩阵保存为[1 3 2 4],而python的顺序为[1 2 3 4]。此效果会使您的图像转换。

考虑在保存之前在Matlab中转置图像 - 这样数据就会以与python中相同的顺序存储在内存中。