假设我有一个数组
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中做到这一点?
答案 0 :(得分:5)
可以做以下其中一项:
rot90(a,2).T
rot90(flipud(a),1)
rot90(fliplr(a), -1)
或评论中建议的hpaulj(感谢hpaulj)
a[::-1,::-1].T
以下是速度排名,即反转换1000个随机10000x10000阵列后最慢的方法的比率。
a[::-1,::-1].T
rot90(a,2).T
rot90(flipud(a),1)
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))