如何高效地沿对角线翻转numpy数组?

10
假设我有以下数组(请注意,在[2,0]位置有一个1,而在[3,4]位置有一个2):
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[1, 0, 0, 0, 0]
[0, 0, 0, 0, 2]
[0, 0, 0, 0, 0]

我希望能高效地沿对角线翻转它,使得:

[0, 0, 1, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 2, 0]

使用fliplr、rot90或flipud不起作用。希望提供有效的答案,而不仅仅是一个答案,因为很遗憾,这不是在这么小的矩阵上执行。


4
NumPy.ndarray.transpose()方法返回矩阵的转置,即将行变为列,将列变为行。这个方法不会修改原始矩阵,而是返回转置后的新矩阵。可以使用transpose()方法的多种方式来交换轴,例如transpose(1,0),transpose(0,1)或transpose(::-1)。 - Arne
1
这个回答解决了你的问题吗?Python中的矩阵转置 - AMC
@AMC 这个是针对NumPy特定的。 - user202729
1个回答

16

旋转数组可以使用np.rot90(np.fliplr(x))或转置数组来解决。

a = np.random.uniform(size=(5,5))
a.T == np.rot90(np.fliplr(a))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接