首页 > 解决方案 > Numpy:按索引对矩阵的元素进行排序

问题描述

我需要对一个由数组定义的矩阵进行排序

example = np.array([[00, 01, 02, 03, 04],
               [10, 11, 12, 13, 14],
               [20, 21, 22, 23, 24],
               [30, 31, 32, 33, 34],
               [40, 41, 42, 43, 44]])

通过索引列表 as index = [1, 3],并获得:

example = np.array([[11, 13, 10, 12, 14],
               [31, 33, 30, 32, 34],
               [01, 03, 00, 02, 04],
               [21, 23, 30, 22, 24],
               [41, 43, 40, 42, 44]])

其中第一个左上角 2x2 子矩阵由位置 [1,1]、[1,3]、[3,1] 和 [3,3] 中的元素组成。

我使用了 for-cycle 和numpy.extract(我认为这不正确),但我确信存在最简单的方法。

标签: cssarraysnumpymatrixindexing

解决方案


创建您想要的排列permutation,然后使用:

e = example[:, permutation][permutation,:]

例如在你的情况下:

permutation = [1, 3, 0, 2, 4]

推荐阅读