关于Numpy中argsort()函数的用法解读

 更新时间:2023年06月14日 10:11:54   作者:SophiaCV  
这篇文章主要介绍了关于Numpy中argsort()函数的用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Numpy中argsort()函数的用法

argsort()函数的作用是将数组按照从小到大的顺序排序,并按照对应的索引值输出

argsort()函数中,当axis=0时,按列排列;当axis=1时,按行排列。如果省略默认按行排列

下边通过例子来说明其用法

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from numpy import *
a = [3, 5, 1]
b = argsort(a)
print("a排序为:", end='')
print(b)
c = [[8, 3, 7], [1, 5, 9]]
d = argsort(c)  # 默认按行排序
print("默认按行排序c为:")
print(d)
print("按行排序c为:")
print(argsort(c, axis=1))
print("按行列排序c为:")
print(argsort(c, axis=0))

运行结果为:

Numpy.argsort()函数使用(以按矩阵指定列对各行排序为例)

该方法返回的是矩阵a要素排序后的索引数据,干说无用,以二维数组为例,按照指定列,如第0列,进行排序。

Python代码:

首先看代码,再逐行解释。

import numpy as n
a = np.array([[0, 11, 12], [2, 2, 3], [7, 8, 9], [1, 2, 3]])
ind = np.argsort(a, axis=0)
print(a)
print(ind)
print(a[ind[:, 0]])
# Output:
# [[ 0 11 12]
#  [ 2  2  3]
#  [ 7  8  9]
#  [ 1  2  3]]
# [[0 1 1]
#  [3 3 3]
#  [1 2 2]
#  [2 0 0]]
# [[ 0 11 12]
#  [ 1  2  3]
#  [ 2  2  3]
#  [ 7  8  9]]

待排序数组"a":

[[ 0 11 12]
[ 2 2  3]
[ 7 8   9]
[ 1 2  3]] 

使用Numpy.argsort对a的各行进行比较,首先会比较a每行的第一列的数值,按第一列数值从小到大排序,再取第二列的值比较,如此往复,最后返回各个元素的在a中的索引值矩阵,将a各元素的索引值放到排序后的位置,你将得到这样一个索引矩阵"ind":

索引矩阵"ind":

[[[0 1 1]
[[3 3 3]
[[1 2 2]
[ [2 0 0]] 

第0列[0 3 1 2]分别表示a[0][0], a[0][3], a[0][1], a[0][2]在a第0列的索引值,同理ind的第1列表示在a第1列的索引值,由于a[0][0]最小所以它还是在第一个位置,a[0][2]最大,所以被放置到了最后一个位置,所以a[0][2]的索引2就在ind矩阵第0列中的最后一个位置。

最后,我们可以取ind的第0列,将矩阵a的各行按照这列的索引排序,即第0行不变,第1行放原先第3行[1 2 3],第2行放原先第1行[2 2 3],第3行放原先第2行[7 8 9],排序后的数组如下:

排序后的数组"a":

[[[ 0 11 12]
[ [ 1 2  3]
[ [ 2 2  3]
[ [ 7 8  9]]]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • pytorch实现ResNet结构的实例代码

    pytorch实现ResNet结构的实例代码

    ResNet网络可以达到很深的层数的原因就是不断的堆叠残差结构而来的,接下来通过本文给大家介绍pytorch实现ResNet结构的示例代码,喜欢的朋友跟随小编一起看看吧
    2021-05-05
  • django queryset相加和筛选教程

    django queryset相加和筛选教程

    这篇文章主要介绍了django queryset相加和筛选教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python使用py2neo操作图数据库neo4j的方法详解

    Python使用py2neo操作图数据库neo4j的方法详解

    这篇文章主要介绍了Python使用py2neo操作图数据库neo4j的方法,结合实例形式详细分析了Python使用py2neo操作图数据库neo4j的具体步骤、原理、相关使用技巧与操作注意事项,需要的朋友可以参考下
    2020-01-01
  • python爬虫如何解决图片验证码

    python爬虫如何解决图片验证码

    这篇文章主要介绍了python爬虫如何解决图片验证码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python编写一个多线程的12306抢票程序的示例

    Python编写一个多线程的12306抢票程序的示例

    对于很多人来说,抢购火车票人们成了一个令人头疼的问题,本文主要介绍了Python编写一个多线程的12306抢票程序的示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Python中os和shutil模块实用方法集锦

    Python中os和shutil模块实用方法集锦

    这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下
    2014-05-05
  • python实现邮件循环自动发件功能

    python实现邮件循环自动发件功能

    这篇文章主要介绍了python实现邮件循环自动发件功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Python调用MySQLdb插入中文乱码的解决

    Python调用MySQLdb插入中文乱码的解决

    这篇文章主要介绍了Python调用MySQLdb插入中文乱码的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 解决TensorFlow程序无限制占用GPU的方法

    解决TensorFlow程序无限制占用GPU的方法

    这篇文章主要介绍了解决TensorFlow程序无限制占用GPU的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 用Python计算三角函数之atan()方法的使用

    用Python计算三角函数之atan()方法的使用

    这篇文章主要介绍了用Python计算三角函数之atan()方法的使用,是Python入门的基础知识,需要的朋友可以参考下
    2015-05-05

最新评论