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

Why does matplotlib imshow() display a transposed image?

我有一个在 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])

我会 post 图片,但我是 Whosebug 的新手,我还没有足够的声誉。

干杯,

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

M = [1, 2
     3, 4]

在内存中,matlab将矩阵保存为[1 3 2 4],而python的阶数为[1 2 3 4]。此效果会导致您的图像被转置。

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