特征向量按某特征排序+python+argsort排序
普通一维数组排序
数组索引获取多元素
首先我们要知道python
是可以通过数组索引获取多个元素的
如下
import numpy as np
arr = np.array([4,7,6,8,5])
index = [4,3,2,1,0]
print(arr[index]) # [5 8 6 7 4]
np.argsort()
np.argsort()
默认返回数组从小到大排序后每个元素在原数组中的索引
更多功能请上网查
import numpy as np
arr = np.array([4,7,6,8,5])
print(arr.argsort()) # [0 4 2 1 3]
结合
将上述两个功能结合,我们便可以一行搞定数组的排序
import numpy as np
arr = np.array([4,7,6,8,5])
arr = arr[arr.argsort()]
print(arr) # [4 5 6 7 8]
特征向量排序
特征向量排序其实就是二维数组根据每个一维数组的某个位置元素排序
一组特征向量如下
data = np.array([[1,2,1],[2,1,2],[4,3,4]])
'''
[[1 2 1]
[2 1 2]
[4 3 4]]
'''
我们需要按照第二个特征对这三个特征向量进行从小到大的排序
首先我们要获取按第二个特征排序后对应原数组的索引
import numpy as np
data = np.array([[1,2,1],[2,1,2],[4,3,4]])
index = data[:,1].argsort()
print(index) # [1 0 2]
然后直接像排一维数组那样排就行了
import numpy as np
data = np.array([[1,2,1],[2,1,2],[4,3,4]])
data = data[data[:,1].argsort()]
print(data)
'''
[[2 1 2]
[1 2 1]
[4 3 4]]
'''