关于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 Dataframe 合并与去重详情

    python Dataframe 合并与去重详情

    这篇文章主要介绍了python Dataframe 合并与去重详情,文章围绕主题展开详细的内容介绍,具有一定参考价值,需要的朋友可以参考一下
    2022-08-08
  • python开启多个子进程并行运行的方法

    python开启多个子进程并行运行的方法

    这篇文章主要介绍了python开启多个子进程并行运行的方法,涉及Python进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • Pandas DataFrame数据的更改、插入新增的列和行的方法

    Pandas DataFrame数据的更改、插入新增的列和行的方法

    这篇文章主要介绍了Pandas DataFrame数据的更改、插入新增的列和行的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Python中的with...as用法介绍

    Python中的with...as用法介绍

    这篇文章主要介绍了Python中的with...as用法介绍,本文直接给出用法实例,需要的朋友可以参考下
    2015-05-05
  • Python+tkinter使用80行代码实现一个计算器实例

    Python+tkinter使用80行代码实现一个计算器实例

    这篇文章主要介绍了Python+tkinter使用80行代码实现一个计算器实例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python 调用 ES、Solr、Phoenix的示例代码

    Python 调用 ES、Solr、Phoenix的示例代码

    这篇文章主要介绍了Python 调用 ES、Solr、Phoenix的示例代码,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • 使用Python实现为PDF文档设置和移除密码

    使用Python实现为PDF文档设置和移除密码

    在数字化时代,文档的安全性变得越来越重要,特别是对于包含敏感信息的PDF文件,所以本文主要来和大家介绍一下如何使用Python实现为PDF文档设置和移除密码,需要的可以参考下
    2024-03-03
  • Django框架HttpRequest对象用法实例分析

    Django框架HttpRequest对象用法实例分析

    这篇文章主要介绍了Django框架HttpRequest对象用法,结合实例形式分析了Django框架HttpRequest对象发送请求数据的相关使用技巧,需要的朋友可以参考下
    2019-11-11
  • 深入浅析python 协程与go协程的区别

    深入浅析python 协程与go协程的区别

    这篇文章主要介绍了python 协程与go协程的区别 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • python中如何使用正则表达式的集合字符示例

    python中如何使用正则表达式的集合字符示例

    我们都知道,正则表达式可以很方便地对字符串进行匹配、查找、分割等操作,下面这篇文章主要给大家介绍了关于python中如何使用正则表达式的集合字符的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下。
    2017-10-10

最新评论