日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python Numpy中返回下标操作函数-节约时间的利器

發(fā)布時間:2025/4/16 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python Numpy中返回下标操作函数-节约时间的利器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如果覺得Python慢,那么首先應該想到是不是沒有用對。

Numpy是Python中自帶的一個數(shù)值計算庫,包含了大量數(shù)值計算的常用方法。其底層大量使用C/C++(超過50%的代碼量),矩陣計算調(diào)用LAPACK庫(Fortran),同時在大量代碼優(yōu)化的層面做了工作,使得其內(nèi)置方法速度奇快。

Numpy的設計也頗具人性化, 有許多具有特色又好用的方法可供使用。其中以arg開頭函數(shù)就是專門為返回下標(集)而設計的,總共有5個這樣的函數(shù),它們簡單易用,在許多問題里可以將程序極度簡化,從而提高我們的工作效率。

1. argwhere()

這個函數(shù)與where基本一致,主要用于查找元素所在的位置:

a = np.array([46, 57, 23, 39, 1, 10, 0, 120])# 找出a中大于1的所有元素的下標 np.argwhere(a > 1) Out: array([[0],[1],[2],[3],[5],[7]], dtype=int64) # 找出a中所有小于10的元素的下標 np.argwhere(a < 10) Out: array([[4],[6]], dtype=int64)

如果拿到一個需要返回元素下標的任務,我們從C直接考慮的話可能想到的是去遍歷元素,再利用一個臨時變量來計數(shù),在匹配過程中返回這個計數(shù)值。雖然實現(xiàn)起來也很簡單,但速度不是很快。而用這種方法,簡單易懂,同時又超快。

2. argmin(),argmax()

最大,最小值的下標。這種操作應該也是我們非常常用的,而這兩個函數(shù)的用法實際上和np.max(),np.min()的用法是完全一樣的。

a = np.array([46, 57, 23, 39, 1, 10, 0, 120]) np.argmin(a) Out: 6 np.argmax(a) Out: 7
3. argsort()

這個函數(shù)非常厲害,它首先將輸入的數(shù)組進行升序排列,再將排列后各元素原下標依次返回。這種操作在一些需要聯(lián)動排序的時候特別管用。比如我們之前講過的在PCA的計算過程中,需要對特征值從大到小排序,同時要對它們對應的特征向量也排序。那么這個時候直接返回特征值排序后的原下標就能極大程序上簡化我們的代碼,同時又能節(jié)約大量的時間。

a = np.array([46, 57, 23, 39, 1, 10, 0, 120])np.argsort(a) Out: array([6, 4, 5, 2, 3, 0, 1, 7], dtype=int64)a[np.argsort(a)] Out: array([ 0, 1, 10, 23, 39, 46, 57, 120])

上面最后一步主要是為了用它檢驗函數(shù)的正確性,同時也方便對照分析。

根據(jù)第4行的結(jié)果,我們來看前2個元素。它返回值表示:排序后的數(shù)組中第一個元素應該是原數(shù)組中的第7個元素0,第二個元素應該是原數(shù)組中的第5個元素1。那么看看第7行,完全正確。

當然,還有一個問題是np.sort本身只進行升序排列,那么當我們需要降序時直接將下標進行反序即可:

np.argsort(a)[::-1] Out: array([7, 1, 0, 3, 2, 5, 4, 6], dtype=int64)a[np.argsort(a)[::-1]] Out: array([120, 57, 46, 39, 23, 10, 1, 0])
4. argpartition()

這也是一個非常神奇的函數(shù),它主要是對應partition函數(shù)。如果只看文檔說明很有可能理解錯誤。所以我們先簡單說明一下函數(shù)的主要參數(shù)的含義。

np.argpartition(a,k)

這里a是 我們的原數(shù)組,k比如好理解的一種方式是:若將a進行排序,那么排序后的數(shù)組中的下標為k個元素應該處在其最終的位置。這句話有一點不太好理解。當然如果我們學過歸并排序(快排的基礎)的話,就可以理解這種分組的思路。

這個算法最終返回的下標里面,下標為k的元素一定處在原數(shù)組升序排列后的最終位置,它前面所有值全部小于等于它,后面所有值全部大于等于它,但其前后所有元素內(nèi)的順序是不關(guān)心的。所以這樣就自然而然地能想到,由于它只考慮該元素的最終位置,那么時間復雜度可以在很大程度上降低。

先看一個簡單的例子:

a = np.array([46, 57, 23, 39, 1, 10, 0, 120])np.argpartition(a,3) Out: array([6, 4, 5, 2, 3, 0, 1, 7], dtype=int64)a[np.argpartition(a,3)] Out: array([ 0, 1, 10, 23, 39, 46, 57, 120])

這里可以清楚地看到,排序后的元素中下標為3的元素23的前面已經(jīng)全部小于它,后面已經(jīng)全部大于它,因此這個元素已經(jīng)處在其排序后的最終位置了。

那么利用這個功能,我們主要是可以用它來找出元素中第k小的元素或者是第k大的元素所在的下標。

a[np.argpartition(a,3)[3]] Out: 23 # 第四小的元素剛好是23a[np.argpartition(a,-3)[-3]] Out[]: 46 # 這里是倒數(shù)第3小的元素,也就是第3大的元素,正是46

另外,上述方法也可以指定具體的排序方法。比如上面提到的這種思想的基本排序方法是歸并排序,其實也可以指定快速排序等方法。不過在數(shù)據(jù)量級不是特別大的情況下差異并不大。

總結(jié)

以上是生活随笔為你收集整理的Python Numpy中返回下标操作函数-节约时间的利器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩中文一区 | 姐姐的朋友2在线 | 一区二区视频免费观看 | 国产黄色特级片 | 1000部国产精品成人观看 | 一级α片免费看刺激高潮视频 | 自慰无码一区二区三区 | 亚洲精品女| 国产r级在线观看 | 欧美黑人欧美精品刺激 | 夜色导航 | 北京少妇xxxx做受 | 无码无套少妇毛多18pxxxx | 国产黄色av片 | 欧美黄视频| www日韩视频| 在线欧美日韩国产 | 欧美成人精品一区二区免费看片 | 黄色小说图片视频 | 亚洲顶级毛片 | 日本精品99 | 黑白配av| 亚洲第十页 | 日韩在线免费av | 99国内揄拍国内精品人妻免费 | 亚洲 欧美 中文字幕 | 毛片的网站 | 在线观看 亚洲 | 在线观看 中文字幕 | 国产成人精品一区二区在线小狼 | 日本韩国欧美一区二区三区 | 午夜宅男网 | 真实人妻互换毛片视频 | 国产伦精品一区二区三区妓女下载 | 农村村妇真实偷人视频 | 久久先锋| 亚洲精品成人片在线观看精品字幕 | 人妻在客厅被c的呻吟 | 日本三级欧美三级 | 欧美成人一区二区视频 | 日韩精品一区二区三区在线观看 | 火影黄动漫免费网站 | 亚洲av成人精品日韩在线播放 | 爱操在线 | 亚洲精品无码永久在线观看 | 黄色片网站在线观看 | 日韩视频在线免费观看 | 丰满少妇中文字幕 | 人人澡人人草 | 日韩av一 | 高h1v | 久久影视av| 久久九九99 | 国产99久久久久久免费看 | 99热在线这里只有精品 | 我的公把我弄高潮了视频 | 久操影视 | 娇小激情hdxxxx学生 | 蜜桃精品成人影片 | 综合九九 | 国产午夜在线一区二区三区 | 国产日批视频在线观看 | 快播视频在线观看 | 69久久久| 在线观看成人小视频 | 久久久久一 | 日韩精品一区二区三区色欲av | 国产美女视频 | 欧美一级看片 | 美女扒开腿男人爽桶 | 99久久婷婷国产精品综合 | 国模视频在线 | 亚洲射射射 | 欧美熟妇乱码在线一区 | 日批在线观看视频 | 国产一级在线观看视频 | 日本一区不卡在线观看 | 黑人导航| 又黄又爽一区二区三区 | 成人久久| 欧美激情影院 | 精品免费一区二区 | 精品国产一二 | 国产欧美一区二区精品忘忧草 | 欧美区视频 | 日韩精品――中文字幕 | 嫩草免费视频 | 69成人免费视频 | 国产成人aaaa| 午夜美女福利视频 | 黄色99视频| 另类专区欧美 | 亚洲午夜小视频 | h片在线观看视频 | 91视频久久久 | cao在线视频| 黄色片链接 | 懂色av蜜臀av粉嫩av分享吧 | 国内自拍视频网站 |