關于Numpy中argsort()函數(shù)的用法解讀
Numpy中argsort()函數(shù)的用法
argsort()函數(shù)的作用是將數(shù)組按照從小到大的順序排序,并按照對應的索引值輸出。
argsort()函數(shù)中,當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))運行結(jié)果為:

Numpy.argsort()函數(shù)使用(以按矩陣指定列對各行排序為例)
該方法返回的是矩陣a要素排序后的索引數(shù)據(jù),干說無用,以二維數(shù)組為例,按照指定列,如第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]]
待排序數(shù)組"a":
[[ 0 11 12]
[ 2 2 3]
[ 7 8 9]
[ 1 2 3]]
使用Numpy.argsort對a的各行進行比較,首先會比較a每行的第一列的數(shù)值,按第一列數(shù)值從小到大排序,再取第二列的值比較,如此往復,最后返回各個元素的在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],排序后的數(shù)組如下:
排序后的數(shù)組"a":
[[[ 0 11 12]
[ [ 1 2 3]
[ [ 2 2 3]
[ [ 7 8 9]]]
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python訓練數(shù)據(jù)時打亂訓練數(shù)據(jù)與標簽的兩種方法小結(jié)
今天小編就為大家分享一篇python訓練數(shù)據(jù)時打亂訓練數(shù)據(jù)與標簽的兩種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python?pandas數(shù)據(jù)處理教程之合并與拼接
在實際處理數(shù)據(jù)業(yè)務需求中,我們經(jīng)常會遇到這樣的需求,將多個表連接起來再進行數(shù)據(jù)的處理和分析,類似SQL中的連接查詢功能,下面這篇文章主要給大家介紹了關于python?pandas數(shù)據(jù)處理教程之合并與拼接的相關資料,需要的朋友可以參考下2022-02-02
簡單談談Python中的幾種常見的數(shù)據(jù)類型
Python 中的變量不需要聲明。每個變量在使用前都必須賦值,變量賦值以后該變量才會被創(chuàng)建。在 Python 中,變量就是變量,它沒有類型,我們所說的"類型"是變量所指的內(nèi)存中對象的類型。2017-02-02
Python向MySQL批量插數(shù)據(jù)的實例講解
下面小編就為大家分享一篇Python向MySQL批量插數(shù)據(jù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
讓Python腳本暫停執(zhí)行的幾種方法(小結(jié))
這篇文章主要介紹了讓Python腳本暫停執(zhí)行的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07
python實現(xiàn)爬蟲統(tǒng)計學校BBS男女比例之多線程爬蟲(二)
這篇文章主要介紹了python實現(xiàn)爬蟲統(tǒng)計學校BBS男女比例之多線程爬蟲,感興趣的小伙伴們可以參考一下2015-12-12

