美文网首页
通过Numpy的sort() 和 argsort()排序和恢复数

通过Numpy的sort() 和 argsort()排序和恢复数

作者: 车湾里 | 来源:发表于2020-05-03 12:11 被阅读0次

在NumPy中,sort() 可以对数组进行排序
argsort() 可以返回排序后的数组在原数组中的下标

sort() 和 agrsort()

举个例子:

原数组如下:

import numpy as np
a1 = np.array([10,6,8,2,5,4,9,1])
a1
## array([10,  6,  8,  2,  5,  4,  9,  1])

sort() 排序:

b1= np.sort(a1)
b1
##  array([ 1,  2,  4,  5,  6,  8,  9, 10])

argsort() 得到原来的索引位置

i1 = np.argsort(a1)
i1
## array([7, 3, 5, 4, 1, 2, 6, 0], dtype=int64)

那么如何通过这个索引位置恢复到原来的数组呢?
则将上面的i1再进行一次argsort()运算,得到索引,按照索引去排序过后的b1中找

b1[np.argsort(i1)]
##  array([10,  6,  8,  2,  5,  4,  9,  1])

题图是在《Python One-Liners》这本书里的,有兴趣的朋友,可以看一下哦

参考资料:

  1. 书籍《Python One-Liners》
    2. https://stackoverflow.com/questions/2483696/undo-or-reverse-argsort-python

相关文章

网友评论

      本文标题:通过Numpy的sort() 和 argsort()排序和恢复数

      本文链接:https://www.haomeiwen.com/subject/xurdghtx.html