赞
踩
本文参考自菜鸟教程,另有需求的朋友可自行查询!
函数格式如下:
numpy.sort(a, axis, kind, order)
参数说明:
实例:
import numpy as np
a = np.array([[2,5],[8,1]])
print ('我们的数组是:')
print (a)
print ('调用 sort() 函数:')
print (np.sort(a))
print ('按列排序:')
print (np.sort(a, axis = 0))
# 在 sort 函数中排序字段
dt = np.dtype([('name', 'S10'),('age', int)]) #s10代表长度为10的字符串
a = np.array([("b",21),("a",25),("d", 17), ("c",27)], dtype = dt)
print ('我们的数组是:')
print (a)
print ('按 name 排序:')
print (np.sort(a, order = 'name'))
结果如下:
我们的数组是:
[[2 5]
[8 1]]
调用 sort() 函数:
[[2 5]
[1 8]]
按列排序:
[[2 1]
[8 5]]
我们的数组是:
[(b'b', 21) (b'a', 25) (b'd', 17) (b'c', 27)]
按 name 排序:
[(b'a', 25) (b'b', 21) (b'c', 27) (b'd', 17)]
numpy.argsort() 函数返回的是数组值从小到大的索引值。
实例:
import numpy as np
x=np.array([4,2,3,1])
print('数组为:\n{}'.format(x))
y=x.argsort()
print('从小到大排序后的索引值为:\n{}'.format(y))
print('以排序后的顺序重构原数组:\n{}'.format(x[y]))
print ('使用循环重构原数组:')
for i in y:
print(x[i], end=" ")
结果如下:
数组为:
[4 2 3 1]
从小到大排序后的索引值为:
[3 1 2 0]
以排序后的顺序重构原数组:
[1 2 3 4]
使用循环重构原数组:
1 2 3 4
numpy.lexsort() 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。
这里举一个应用场景:小升初考试,重点班录取学生按照总成绩录取。在总成绩相同时,数学成绩高的优先录取,在总成绩和数学成绩都相同时,按照英语成绩录取…… 这里,总成绩排在电子表格的最后一列,数学成绩在倒数第二列,英语成绩在倒数第三列。
实例:
import numpy as np
math=np.array([87,90,65,70])
total=np.array([340,250,540,400])
test=np.lexsort((math,total)) #排序后存储的为索引值
print ('调用 lexsort() 函数:\n{}'.format(test))
print ('使用这个索引来获取排序后的数据:')
print(np.array([[math[i],total[i]] for i in test])) #便于理解,转换成二维数组
结果如下:
调用 lexsort() 函数:
[1 0 3 2]
使用这个索引来获取排序后的数据:
[[ 90 250]
[ 87 340]
[ 70 400]
[ 65 540]]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。