“变换”脾气暴躁的人:移动尺寸

时间:2018-09-17 02:24:08

标签: python numpy multidimensional-array

我正在创建数组a:

import numpy as np
a = np.zeros((3, 10, 10), np.uint8)
a[1,5,5] = 255

,中间有一个红点,其中RGB是第一维。然后我使用matplotlib对其进行绘制:

import matplotlib.pyplot as plt
plt.imshow(a)

但是,这当然是行不通的,因为imshow期望数组的尺寸为(10,10,3),而我正在将数组的尺寸为(3,10,10)。我怎样才能“翻转”数组,使RGB是第三个维度,而不是第一个维度?

1 个答案:

答案 0 :(得分:2)

您需要的是swapaxes

import numpy as np
a = np.zeros((3, 10, 10), np.uint8)

print(a.shape) #(3,10,10)

print(np.swapaxes(a,0,2).shape) #(10,10,3)

请参见documentation


np.swapaxes(a,0,2)等于np.transpose(a, (2,1,0))

还有另一个选项np.transpose(a, (1,2 0))

和往常一样,转置矩阵可以有两个版本,它们产生相似的结果,但具有不同的3维旋转对称性。

这取决于镜像矩阵是否会影响结果,您应该仔细测试它是否有所不同。