Python中numpy.argsort()函数用法详解与索引提取技巧
本文详细介绍Python中numpy库的argsort()函数,通过实例演示如何将数组元素从小到大排序并提取对应索引。重点解析利用负数索引(如[[wp:a2]])快速获取最大值或特定排名元素的方法,适用于批量数据处理及模型分类场景。
在利用Python对训练好的caffemodel进行大量图片的批处理分类时,笔者在学习过程中遇到了argsort函数。为了明确其功能,查阅了相关资料并在Python环境中进行了实测,基本掌握了其应用方式。为避免日后遗忘,特此记录以加深理解。(注:笔者为Python初学者,理解可能较为浅显)
1. 首先定义一个数组数据
import numpy as np x=np.array([1,4,3,-1,6,9])
2. 接下来观察argsort()函数的具体功能表现:
x.argsort()
设定输出变量y=array([3,0,2,1,4,5])。
分析可知,argsort()函数的作用是将原数组x中的元素按从小到大顺序排列,并提取这些元素在原数组中的索引(index),最终输出到y中。例如:x[3]的值为-1,是最小值,因此y[0]=3;x[5]的值为9,是最大值,因此y[5]=5。
上述原理较为直观,不熟悉的朋友可以进入Python环境自行验证。
3. 在实际程序中遇到了类似np.argsort()[num]的写法,起初难以理解,遂在Python环境中进行单独测试:
注:此处num的绝对值需小于或等于x中元素的个数。
当num>=0时,np.argsort()[num]就可以理解为y[num];
当num<0时,np.argsort()[num]就是把数组y的元素反向输出,例如np.argsort()[-1]即输出x中最大值对应的index,np.argsort()[-2]即输出x中第二大值对应的index,依此类推。
直观的实验结果如下,基于上述示例进行验证:

这是当num为负值时的输出结果。

这是num>=0时的输出结果。
总结:通过上述阐述,应对argsort()的用法有了初步了解。由于未查阅官方文档,理解可能存在不足,恳请指正。也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













