我有一个 N x 100
numpy
矩阵,其中包含我想要排序的任何类型的数字。
为了让它更直观,我现在将用虚拟值填充它:
import numpy as np
X = np.array( [[float(number) for number in range(100)] for _ in range(10)] )
# X
[[ 0. 1. 2. ..., 97. 98. 99.]
[ 0. 1. 2. ..., 97. 98. 99.]
[ 0. 1. 2. ..., 97. 98. 99.]
...,
[ 0. 1. 2. ..., 97. 98. 99.]
[ 0. 1. 2. ..., 97. 98. 99.]
[ 0. 1. 2. ..., 97. 98. 99.]]
我想使用以下 100
元素列表作为键对所有 N
行的列进行排序:
# s
["butterfly", "zebra", "cactus", ... "animal", "xylitol", "yoyo"]
所以输出看起来像这样:
# X_sorted
[[ 97. 0. 2. ..., 98. 99. 1.]
[ 97. 0. 2. ..., 98. 99. 1.]
[ 97. 0. 2. ..., 98. 99. 1.]
...,
[ 97. 0. 2. ..., 98. 99. 1.]
[ 97. 0. 2. ..., 98. 99. 1.]
[ 97. 0. 2. ..., 98. 99. 1.]]
基本上,我想检索 s
的字母排序输出,并将其应用于 X
的列。
我怎样才能做到这一点?
我熟悉使用 key
的 sort
命令,但我不知道如何将其应用于这种情况下的矩阵列。
最佳答案
如果您的对象是 numpy 数组(如 X = np.array(X); s = np.array(s)
),那么您可以使用 np.argsort
,它返回一个索引数组,这些索引将使输入排序。
X_sorted = X[:, np.argsort(s)]
关于python - 使用 Python 根据列表值对矩阵列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48929634/