我正在创建数组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是第三个维度,而不是第一个维度?
答案 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维旋转对称性。
这取决于镜像矩阵是否会影响结果,您应该仔细测试它是否有所不同。