当前位置:   article > 正文

Numpy:np.sort() & np.argsort()_np.quicksort的最小值为什么是-1

np.quicksort的最小值为什么是-1

numpy 中提供了丰富的数组排序方法,这里只列举最常用的函数和用法~

1. np.sort()

sort(a, axis=-1, kind=‘quicksort’, order=None):
Return a sorted copy of an array.

这里,axis指定排序的维度,默认-1指的是最后一个维度

a = np.array([
    [1,5,9],
    [4,2,6],
    [3,3,7]
])
b = np.array(['b', 'a', 'c'])
print(np.sort(a))
print(np.sort(a, axis=0))
print(np.sort(a, axis=1))
print(np.sort(b))

[Out]:
[[1 5 9]
 [2 4 6]
 [3 3 7]]
 
[[1 2 6]
 [3 3 7]
 [4 5 9]]
 
[[1 5 9]
 [2 4 6]
 [3 3 7]]
 
['a' 'b' 'c']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

2. np.argsort()

argsort(a, axis=-1, kind=‘quicksort’, order=None):
Returns the indices that would sort an array.

a = np.array([
    [1,5,9],
    [4,2,6],
    [3,3,7]
])
b = np.array(['b', 'a', 'c'])
print(np.argsort(a, axis=-1))
print(np.argsort(a, axis=0))
print(np.argsort(a, axis=1))
print(np.argsort(b))
print(b[np.argsort(b)])

[Out]:
[[0 1 2]
 [1 0 2]
 [0 1 2]]
 
[[0 1 1]
 [2 2 2]
 [1 0 0]]
 
[[0 1 2]
 [1 0 2]
 [0 1 2]]
 
[1 0 2]

['a' 'b' 'c']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

这里解释一下,argsort输出的是排序后当前位置所应该放的值的索引,比如 b=[‘b’, ‘a’, ‘c’],排序后第0个位置应该放’a’(索引为1),第1个位置应该放’b’(索引为0),第2个位置应该放’c’(索引为2),故最终输出为[1 0 2]~

另外,argosrt有个很方便的用法,比如我们希望对一个二维数组按某一列进行排序,就可以靠argsort完成,原理也很好理解~

a = np.array([
    [1,5,9],
    [4,2,6],
    [3,3,7]
])

print(a[np.argsort(a[:, 1])])   # 按第1列排序
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3. 其他

numpy中更多的排序方法,比如np.lexsort可用于对多个序列进行排序,可以参考菜鸟教程
另外,上文中排序结果都是升序排序,若想逆序,可以使用如下方法:

a = np.array([
    [1,5,9],
    [4,2,6],
    [3,3,7]
])

# 方法一:在argsort中加负号
print(a[np.argsort(-a[:, 1])])

# 方法二:逆序索引
print(a[np.argsort(a[:, 1])][::-1])

[Out][[1 5 9]
 [3 3 7]
 [4 2 6]]
 
[[1 5 9]
 [3 3 7]
 [4 2 6]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/648873
推荐阅读
相关标签
  

闽ICP备14008679号