背景
最近需要对数组进行排序,但网上的博文有不少细节不够完整,对小白不够友好,所以简单写一下numpy的排序
1. numpy.sort
numpy.sort可直接对数组进行排序,非常简单,对一维数组排序很方便(多维数组更建议用其他功能更多的函数),例如
import numpy as np
x = np.array([1,6,7,8,2,3,3,5])
print(x)
x_sort = np.sort(x,axis = 0)
print(x_sort)
直接对x进行排序,结果为
2. numpy.argsort
argsort与sort不同,其直接返回的是索引值,而不是排序好后的值,在得到索引值后,需要再做一步 list[索引值],才能得到排序后的值
例如对x按行排列
import numpy as np
x = np.array([[9,6,7],[2,6,7],[8,2,3]])
print(x)
# x_index为索引值
x_index = x[:,0].argsort()
# x_sort排序后的值
x_sort = x[x_index]
print(x_sort)
结果为
2. numpy.lexsort
和argsort一样返回的是索引值。但是排序条件可以设置的更为复杂,比如在条件1排序相等的情况下,再根据条件2进行排序,例如下例,先根据第0列按从小到大排,值相等的情况下,按第1列值从小到大排列(注意这里首要条件是放在后面!!!这个和日常习惯是相反的)
import numpy as np
x = np.array([[9,6,7],[9,4,7],[8,2,3]])
print(x)
# x_index为索引值
# !!!注意首要条件放在后面
x_index = np.lexsort((x[:,1],x[:,0]))
# x_sort排序后的值
x_sort = x[x_index]
print(x_sort)
结果为