從numpy數(shù)組中取出滿(mǎn)足條件的元素示例
例如問(wèn)題:從 arr 數(shù)組中提取所有奇數(shù)元素。
input:arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) output: #> array([1, 3, 5, 7, 9]) Solution: #Input >>> arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) #Solution arr = arr[arr % 2 == 1] >>> array([1, 3, 5, 7, 9])
這是對(duì)奇數(shù)元素的提取,其他條件同理,在這個(gè)問(wèn)題上我們深入再學(xué)習(xí)一下,首先 numpy 中的 array 數(shù)組是可以直接對(duì)數(shù)組中的每個(gè)元素進(jìn)行處理的。例如我們想對(duì)每個(gè)元素減一:
#input >>> arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) #Solution >>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> arr - 1 array([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
從上面的例子我們可以看出來(lái),對(duì) arr 直接進(jìn)行減一操作,結(jié)果是對(duì)每一個(gè)元素都進(jìn)行了減一的操作,數(shù)組的維度不變,為了滿(mǎn)足取出特定條件的元素這個(gè)操作,我們可以進(jìn)行條件判斷,例如判斷每個(gè)元素是否為奇數(shù):
#input >>> arr = np.arange(10) >>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) #solution >>> arr % 2 == 1 array([False, True, False, True, False, True, False, True, False, True])
由此可見(jiàn),條件判斷后輸出為和 arr 相同維度的數(shù)組,但是其中每個(gè)元素為布爾類(lèi)型的值,取值為數(shù)組 arr 對(duì)每個(gè)元素分別進(jìn)行條件判斷的結(jié)果。
下面我們分析對(duì) arr 數(shù)組進(jìn)行特定取值,給其一個(gè)布爾類(lèi)型的 arr 數(shù)組,并且維度與 arr 相同,以此得到取值的目的:
#input >>> arr_bool = np.array([1, 1, 0, 0, 1, 1, 0, 0, 1, 1], dtype=bool) >>> arr_bool array([ True, True, False, False, True, True, False, False, True, True]) #solution >>> arr[arr_bool] array([0, 1, 4, 5, 8, 9])
從上述例子,我們構(gòu)建了一個(gè)布爾類(lèi)型的數(shù)組為 arr_bool ,并且維度與 arr 相同,進(jìn)行直接嵌入實(shí)現(xiàn)了取值,以此完成了我們最終的目的,可以對(duì)任意滿(mǎn)足條件的元素進(jìn)行提取。并且理解了其中的原理。
PS:番外篇,如果維度不同可以嗎?
#input >>> arr_bool = np.ones(11, dtype=bool) >>> arr_bool array([ True, True, True, True, True, True, True, True, True, True, True]) #注意!!這里有11個(gè) True 哦。 #solution >>> arr[arr_bool] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: boolean index did not match indexed array along dimension 0; dimension is 10 but corresponding boolean dimension is 11
由上可見(jiàn),維度必須保持一致,從 arr 數(shù)組里才可以按照 bool 類(lèi)型取出對(duì)應(yīng)位置為 True 的元素。這個(gè)性質(zhì)幫助我們可以更靈活的處理 numpy 數(shù)組。
PS2: 如何替換滿(mǎn)足條件的元素為其它值呢?
>>> arr = np.arange(10) >>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> arr[arr%2 == 1] = -1 >>> arr array([ 0, -1, 2, -1, 4, -1, 6, -1, 8, -1])
以上這篇從numpy數(shù)組中取出滿(mǎn)足條件的元素示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
100行Python代碼實(shí)現(xiàn)自動(dòng)搶火車(chē)票(附源碼)
又到年底了,相信對(duì)于在外地的朋友們來(lái)說(shuō),火車(chē)票是到年底最頭痛的一件事了,但作為程序員的你怎么能一樣呢?快發(fā)揮你的特長(zhǎng),下面這篇文章主要給大家介紹了如果通過(guò)100行Python代碼實(shí)現(xiàn)自動(dòng)搶火車(chē)票的相關(guān)資料,需要的朋友可以參考下。2018-01-01
使用Python進(jìn)行PDF文檔處理的常見(jiàn)操作
使用 Python 進(jìn)行 PDF 文檔處理可以通過(guò)多種庫(kù)來(lái)實(shí)現(xiàn),包括 PyPDF2、pdfplumber、reportlab、pdfminer 等,這些庫(kù)可以處理不同的 PDF 任務(wù),以下是幾種常見(jiàn)操作及對(duì)應(yīng)的庫(kù)和代碼示例,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-09-09
利用插件和python實(shí)現(xiàn)Excel轉(zhuǎn)json的兩種辦法
轉(zhuǎn)換Excel表格到JSON格式有很多方法,下面這篇文章主要給大家介紹了關(guān)于利用插件和python實(shí)現(xiàn)Excel轉(zhuǎn)json的兩種辦法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
pandas如何將dataframe中的NaN替換成None
這篇文章主要介紹了pandas如何將dataframe中的NaN替換成None問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Python編寫(xiě)漏洞驗(yàn)證腳本批量測(cè)試繁瑣漏洞
這篇文章主要為大家介紹了Python編寫(xiě)漏洞驗(yàn)證腳本來(lái)批量測(cè)試繁瑣的漏洞實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
Python3.4實(shí)現(xiàn)從HTTP代理網(wǎng)站批量獲取代理并篩選的方法示例
這篇文章主要介紹了Python3.4實(shí)現(xiàn)從HTTP代理網(wǎng)站批量獲取代理并篩選的方法,涉及Python網(wǎng)絡(luò)連接、讀取、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
結(jié)合Python的SimpleHTTPServer源碼來(lái)解析socket通信
SimpleHTTPServer是Python中一個(gè)現(xiàn)成的HTTP服務(wù)器例子,本文我們將結(jié)合Python的SimpleHTTPServer源碼來(lái)解析socket通信,我們先來(lái)看一下socket的基本概念:2016-06-06

