在python中执行反转置的最佳方法是什么?

时间:2017-06-27 04:50:40

标签: python numpy matrix transpose

假设我有一个数组

a = np.arange(16).reshape((4,4))

0   1  2   3
4   5  6   7
8   9  10  11
12  13 14  15

但我想要

15  11  7  3
14  10  6  2
13  9   5  1
12  8   4  0

是跨越次要对角线的翻转,或者是一种反转置。

我怎么能在numpy中做到这一点?

3 个答案:

答案 0 :(得分:5)

可以做以下其中一项:

rot90(a,2).T

rot90(flipud(a),1)

rot90(fliplr(a), -1)

或评论中建议的hpaulj(感谢hpaulj)

a[::-1,::-1].T

以下是速度排名,即反转换1000个随机10000x10000阵列后最慢的方法的比率。

  1. 63.5% - a[::-1,::-1].T
  2. 85.6% - rot90(a,2).T
  3. 97.8% - rot90(flipud(a),1)
  4. 100% - rot90(fliplr(a),-1)

答案 1 :(得分:0)

这是另一个投入混音。

a.ravel('F')[::-1].reshape(a.shape)

答案 2 :(得分:0)

以这种方式尝试,

np=np[::-1] #reverse the array
a = np.arange(16).reshape((4,4))