关于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]]]

总结

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

相关文章

  • python训练数据时打乱训练数据与标签的两种方法小结

    python训练数据时打乱训练数据与标签的两种方法小结

    今天小编就为大家分享一篇python训练数据时打乱训练数据与标签的两种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python pandas数据处理教程之合并与拼接

    python pandas数据处理教程之合并与拼接

    在实际处理数据业务需求中,我们经常会遇到这样的需求,将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能,下面这篇文章主要给大家介绍了关于python pandas数据处理教程之合并与拼接的相关资料,需要的朋友可以参考下
    2022-02-02
  • 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型

    Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
    2017-02-02
  • Python向MySQL批量插数据的实例讲解

    Python向MySQL批量插数据的实例讲解

    下面小编就为大家分享一篇Python向MySQL批量插数据的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Python识别html主要文本框过程解析

    Python识别html主要文本框过程解析

    这篇文章主要介绍了python识别html主要文本框过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 让Python脚本暂停执行的几种方法(小结)

    让Python脚本暂停执行的几种方法(小结)

    这篇文章主要介绍了让Python脚本暂停执行的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python实现爬虫统计学校BBS男女比例之多线程爬虫(二)

    python实现爬虫统计学校BBS男女比例之多线程爬虫(二)

    这篇文章主要介绍了python实现爬虫统计学校BBS男女比例之多线程爬虫,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 浅谈Python反射 & 单例模式

    浅谈Python反射 & 单例模式

    这篇文章主要介绍了Python反射 & 单例模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • python判断给定的字符串是否是有效日期的方法

    python判断给定的字符串是否是有效日期的方法

    这篇文章主要介绍了python判断给定的字符串是否是有效日期的方法,涉及Python针对字符串与日期操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Pycharm设置自动代码提示的超详细图文教程

    Pycharm设置自动代码提示的超详细图文教程

    有时候我们在使用pycharm编写python代码的时候,发现没有代码提示,怎么解决呢?下面这篇文章主要给大家介绍了关于Pycharm设置自动代码提示的超详细图文教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-05-05

最新评论