如何在不影响通道的情况下交换numpy数组的行和列?(Python 3.9)

如何在不影响通道的情况下交换numpy数组的行和列?(Python 3.9),python,arrays,numpy,Python,Arrays,Numpy,我有一个numpy数组,其结构如下: A = [[(0, 0, 0), (0, 0, 0)], [(0, 0, 0), (0, 0, 0)], [(0, 0, 0), (0, 0, 0)], [(0, 0, 0), (0, 0, 0)]] A有4行、2列和3个通道(在元组中)。简而言之:A.shape=(4,2,3) 现在我需要在不影响通道的情况下交换行和列。 输出应如下所示: B = [[(0, 0, 0), (0, 0, 0), (0, 0, 0), (0,

我有一个numpy数组,其结构如下:

A = [[(0, 0, 0), (0, 0, 0)],
     [(0, 0, 0), (0, 0, 0)],
     [(0, 0, 0), (0, 0, 0)],
     [(0, 0, 0), (0, 0, 0)]]
A
有4行、2列和3个通道(在元组中)。简而言之:
A.shape=(4,2,3)

现在我需要在不影响通道的情况下交换行和列。 输出应如下所示:

B = [[(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)],
     [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)]]
B
有2行、4列和3个通道(元组)。简而言之:
B.shape=(2,4,3)

我在几个小时内发现的最好的一个例子是:
numpy.array(A.transpose()
它对一幅图像有效,但其他图像突然有480个通道XD(
A
是我的简化版本),只有3行


那么我该怎么做呢?

许多可能的方法之一是使用以下方法:


除了
np.swapaxes
之外的另一种方法是使用
np.transpose

检查文档中的基本示例

A = [[(0, 0, 0), (0, 0, 0)],
     [(0, 0, 0), (0, 0, 0)],
     [(0, 0, 0), (0, 0, 0)],
     [(0, 0, 0), (0, 0, 0)]]

A = np.array(A)

C = np.transpose(A, (1, 0, 2)) # axes1 and axes2 are switching here which changes the shape from (4,2,3) to (2,4,3)

print(C)
输出:

[[[0 0 0]
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  [0 0 0]]]

查看
restrape
numpy方法:例如
np.数组(A).restrape(dim1,dim2,dim3)
转置采用顺序参数,例如
A.转置(1,0,2)
将切换前两个维度,剩下最后一个,通道,最后一个。谢谢!Swapax(0,1)方法有效!
[[[0 0 0]
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  [0 0 0]]]