關(guān)于Numpy中argsort()函數(shù)的用法解讀
Numpy中argsort()函數(shù)的用法
argsort()函數(shù)的作用是將數(shù)組按照從小到大的順序排序,并按照對(duì)應(yīng)的索引值輸出。
argsort()函數(shù)中,當(dāng)axis=0時(shí),按列排列;當(dāng)axis=1時(shí),按行排列。如果省略默認(rèn)按行排列。
下邊通過例子來說明其用法
#!/usr/bin/env python # -*- coding:utf-8 -*- from numpy import * a = [3, 5, 1] b = argsort(a) print("a排序?yàn)椋?, end='') print(b) c = [[8, 3, 7], [1, 5, 9]] d = argsort(c) # 默認(rèn)按行排序 print("默認(rèn)按行排序c為:") print(d) print("按行排序c為:") print(argsort(c, axis=1)) print("按行列排序c為:") print(argsort(c, axis=0))
運(yùn)行結(jié)果為:
Numpy.argsort()函數(shù)使用(以按矩陣指定列對(duì)各行排序?yàn)槔?/h2>
該方法返回的是矩陣a要素排序后的索引數(shù)據(jù),干說無(wú)用,以二維數(shù)組為例,按照指定列,如第0列,進(jìn)行排序。
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對(duì)a的各行進(jìn)行比較,首先會(huì)比較a每行的第一列的數(shù)值,按第一列數(shù)值從小到大排序,再取第二列的值比較,如此往復(fù),最后返回各個(gè)元素的在a中的索引值矩陣,將a各元素的索引值放到排序后的位置,你將得到這樣一個(gè)索引矩陣"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]最小所以它還是在第一個(gè)位置,a[0][2]最大,所以被放置到了最后一個(gè)位置,所以a[0][2]的索引2就在ind矩陣第0列中的最后一個(gè)位置。
最后,我們可以取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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python訓(xùn)練數(shù)據(jù)時(shí)打亂訓(xùn)練數(shù)據(jù)與標(biāo)簽的兩種方法小結(jié)
今天小編就為大家分享一篇python訓(xùn)練數(shù)據(jù)時(shí)打亂訓(xùn)練數(shù)據(jù)與標(biāo)簽的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11python?pandas數(shù)據(jù)處理教程之合并與拼接
在實(shí)際處理數(shù)據(jù)業(yè)務(wù)需求中,我們經(jīng)常會(huì)遇到這樣的需求,將多個(gè)表連接起來再進(jìn)行數(shù)據(jù)的處理和分析,類似SQL中的連接查詢功能,下面這篇文章主要給大家介紹了關(guān)于python?pandas數(shù)據(jù)處理教程之合并與拼接的相關(guān)資料,需要的朋友可以參考下2022-02-02簡(jiǎn)單談?wù)凱ython中的幾種常見的數(shù)據(jù)類型
Python 中的變量不需要聲明。每個(gè)變量在使用前都必須賦值,變量賦值以后該變量才會(huì)被創(chuàng)建。在 Python 中,變量就是變量,它沒有類型,我們所說的"類型"是變量所指的內(nèi)存中對(duì)象的類型。2017-02-02Python向MySQL批量插數(shù)據(jù)的實(shí)例講解
下面小編就為大家分享一篇Python向MySQL批量插數(shù)據(jù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03讓Python腳本暫停執(zhí)行的幾種方法(小結(jié))
這篇文章主要介紹了讓Python腳本暫停執(zhí)行的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python實(shí)現(xiàn)爬蟲統(tǒng)計(jì)學(xué)校BBS男女比例之多線程爬蟲(二)
這篇文章主要介紹了python實(shí)現(xiàn)爬蟲統(tǒng)計(jì)學(xué)校BBS男女比例之多線程爬蟲,感興趣的小伙伴們可以參考一下2015-12-12Pycharm設(shè)置自動(dòng)代碼提示的超詳細(xì)圖文教程
有時(shí)候我們?cè)谑褂胮ycharm編寫python代碼的時(shí)候,發(fā)現(xiàn)沒有代碼提示,怎么解決呢?下面這篇文章主要給大家介紹了關(guān)于Pycharm設(shè)置自動(dòng)代碼提示的超詳細(xì)圖文教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05