亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

numpy中np.sort返回索引的具體使用

 更新時(shí)間:2023年07月19日 15:51:31   作者:python100  
本文主要介紹了使用numpy中np.sort函數(shù)返回索引的詳細(xì)解釋和使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、np.sort函數(shù)返回索引的基本語(yǔ)法

numpy中的np.sort函數(shù)可以將數(shù)組按照從小到大的順序進(jìn)行排序,并且可以通過(guò)指定axis參數(shù)指定排序的維度,如果指定axis=None,則會(huì)將整個(gè)數(shù)組展平后排序。這里我們主要討論np.sort函數(shù)的返回值,也就是返回的排序后元素的原下標(biāo),返回的類型是ndarray,數(shù)據(jù)類型是int。

import numpy as np
a = np.array([3, 1, 2])
print(np.sort(a)) ? ? ? ? ? # 輸出 [1, 2, 3]
print(np.argsort(a)) ? ? ? ?# 輸出 [1, 2, 0]
print(a[np.argsort(a)]) ? ?# 輸出 [1, 2, 3]

在上面的例子中,我們定義了一個(gè)一維數(shù)組a = [3, 1, 2]。通過(guò)np.sort函數(shù)對(duì)a進(jìn)行排序,輸出的結(jié)果是[1, 2, 3]。通過(guò)調(diào)用np.argsort函數(shù),我們可以得到排序后的每個(gè)元素對(duì)應(yīng)的原下標(biāo),即[1, 2, 0]。這個(gè)數(shù)組的意義是第一個(gè)元素1在原數(shù)組中的下標(biāo)是1,第二個(gè)元素2在原數(shù)組中的下標(biāo)是2,第三個(gè)元素3在原數(shù)組中的下標(biāo)是0。接著我們通過(guò)數(shù)組下標(biāo)操作,可以得到排好序的數(shù)組a。

二、np.sort函數(shù)返回索引的特殊用法

在有些情況下,我們需要按照某個(gè)方向的順序?qū)Χ嗑S數(shù)組進(jìn)行排序,比如對(duì)一個(gè)2維數(shù)組按照每行的最大值排序。這時(shí)候我們可以通過(guò)指定axis參數(shù)來(lái)控制排序維度。但是np.sort函數(shù)返回的是經(jīng)過(guò)展平后的下標(biāo)數(shù)組,我們需要重新構(gòu)造原數(shù)組。

import numpy as np
a = np.array([[3, 1], [2, 0]])
print(np.argsort(a, axis=1)) ? ?# 輸出 [[1, 0], [1, 0]]
print(np.unravel_index(np.argsort(a, axis=None), a.shape)) ? ?# 輸出 (array([1, 0, 0, 1]), array([0, 1, 0, 1]))
print(a[np.unravel_index(np.argsort(a, axis=None), a.shape)]) ? ?# 輸出 [0, 1, 2, 3]
# 對(duì)每行進(jìn)行排序
print(a[np.arange(a.shape[0])[:, None], np.argsort(a, axis=1)])
# 輸出 [[1 3]
# ? ? ?[0 2]]

在上面的例子中,我們定義了一個(gè)2維數(shù)組a = [[3, 1], [2, 0]]。通過(guò)np.argsort函數(shù)指定axis=1,表示按照行的方向進(jìn)行排序,輸出的結(jié)果是[[1, 0], [1, 0]]。我們需要使用np.unravel_index函數(shù)把一維的下標(biāo)數(shù)組轉(zhuǎn)化成原數(shù)組的下標(biāo)形式,即輸出(重復(fù)兩遍是因?yàn)閍是2維的):(array([1, 0, 0, 1]), array([0, 1, 0, 1]))。接著我們通過(guò)數(shù)組下標(biāo)操作,可以得到排好序的數(shù)組a,輸出[0, 1, 2, 3]。這個(gè)數(shù)組的意義是原數(shù)組的第二行第一個(gè)元素,在排好序后的數(shù)組中的位置是0,以此類推。

最后我們可以使用切片和numpy的廣播技巧,對(duì)每一行進(jìn)行排序,輸出的結(jié)果是[[1, 3], [0, 2]],也就是每一行排好序的新數(shù)組。

三、避免在函數(shù)參數(shù)中使用np.sort函數(shù)返回索引

在使用np.sort函數(shù)返回索引時(shí),有時(shí)候我們會(huì)在一些函數(shù)中作為參數(shù)傳遞,很容易出現(xiàn)錯(cuò)誤和難以調(diào)試。這個(gè)時(shí)候我們可以使用np.take_along_axis函數(shù)來(lái)代替這個(gè)過(guò)程。

import numpy as np
a = np.array([[3, 1], [2, 0]])
print(np.sort(a, axis=1)) ? ? ?# 經(jīng)過(guò)排序后的數(shù)組
print(np.take_along_axis(a, np.argsort(a, axis=1), axis=1)) ? ?# 與上面相同的結(jié)果

在上面的例子中,我們有一個(gè)2維數(shù)組a = [[3, 1], [2, 0]],通過(guò)np.argsort函數(shù)指定axis=1,表示按照行的方向進(jìn)行排序。我們先輸出經(jīng)過(guò)排序后的數(shù)組。接下來(lái)我們使用np.take_along_axis函數(shù),第一個(gè)參數(shù)是原數(shù)組a,第二個(gè)參數(shù)是經(jīng)過(guò)排序后的下標(biāo)數(shù)組。這個(gè)函數(shù)會(huì)返回按照排序后的下標(biāo)數(shù)組重新構(gòu)造的數(shù)組。

四、總結(jié)

本文主要介紹了使用numpy中np.sort函數(shù)返回索引的詳細(xì)解釋和使用方法,包括基本語(yǔ)法、特殊用法以及避免在函數(shù)參數(shù)中使用np.sort函數(shù)返回索引。使用np.sort函數(shù)返回的下標(biāo)數(shù)組在多維數(shù)組排序時(shí)特別有用,需要特別注意在使用過(guò)程中的問(wèn)題和陷阱。

到此這篇關(guān)于numpy中np.sort返回索引的具體使用的文章就介紹到這了,更多相關(guān)numpy np.sort返回索引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教你使用Python?的?Template?類生成文件報(bào)告

    教你使用Python?的?Template?類生成文件報(bào)告

    這篇文章主要介紹了用?Python?的?Template?類生成文件報(bào)告,在閱讀本文時(shí),您不僅學(xué)習(xí)了Python字符串的基本知識(shí),Template類以及使用它的原因,而且還實(shí)現(xiàn)了第一個(gè)文件報(bào)告腳本,需要的朋友可以參考下
    2022-08-08
  • 批處理與python代碼混合編程的方法

    批處理與python代碼混合編程的方法

    這篇文章主要介紹了批處理與python代碼混合編程的方法的相關(guān)資料,非常不錯(cuò),具有參考價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • selenium+python實(shí)現(xiàn)文件上傳操作的方法實(shí)例

    selenium+python實(shí)現(xiàn)文件上傳操作的方法實(shí)例

    文件上傳功能是我們?cè)谌粘i_(kāi)發(fā)中經(jīng)常會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于selenium+python實(shí)現(xiàn)文件上傳操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • python列表生成器迭代器實(shí)例解析

    python列表生成器迭代器實(shí)例解析

    這篇文章主要介紹了python列表生成器迭代器實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python實(shí)現(xiàn)決策樹(shù)C4.5算法的示例

    Python實(shí)現(xiàn)決策樹(shù)C4.5算法的示例

    本篇文章主要介紹了Python實(shí)現(xiàn)決策樹(shù)C4.5算法的示例,詳解的介紹了決策樹(shù)C4.5算法的原理和實(shí)現(xiàn)代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-05-05
  • Python面向?qū)ο筮M(jìn)階學(xué)習(xí)

    Python面向?qū)ο筮M(jìn)階學(xué)習(xí)

    在本文里我們整理了關(guān)于Python面向?qū)ο蟮倪M(jìn)階學(xué)習(xí)知識(shí)點(diǎn)以及學(xué)習(xí)路線等內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-05-05
  • 淺析python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃背包問(wèn)題

    淺析python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃背包問(wèn)題

    這篇文章主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃背包問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 全網(wǎng)最細(xì) Python 格式化輸出用法講解(推薦)

    全網(wǎng)最細(xì) Python 格式化輸出用法講解(推薦)

    這篇文章主要介紹了全網(wǎng)最細(xì) Python 格式化輸出用法講解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Python3安裝tensorflow及配置過(guò)程

    Python3安裝tensorflow及配置過(guò)程

    TensorFlow 是一個(gè)端到端開(kāi)源機(jī)器學(xué)習(xí)平臺(tái),能夠幫助開(kāi)發(fā)者快速輕松的構(gòu)建和部署由機(jī)器學(xué)習(xí)提供應(yīng)用,對(duì)Python3安裝tensorflow的相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)下吧
    2021-05-05
  • Django2.1集成xadmin管理后臺(tái)所遇到的錯(cuò)誤集錦(填坑)

    Django2.1集成xadmin管理后臺(tái)所遇到的錯(cuò)誤集錦(填坑)

    這篇文章主要介紹了Django2.1集成xadmin管理后臺(tái)所遇到的錯(cuò)誤集錦(填坑),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論