欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從numpy數(shù)組中取出滿足條件的元素示例

 更新時(shí)間:2019年11月26日 09:05:31   作者:西門天偌  
今天小編就為大家分享一篇從numpy數(shù)組中取出滿足條件的元素示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

例如問題:從 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è)問題上我們深入再學(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])

從上面的例子我們可以看出來,對(duì) arr 直接進(jìn)行減一操作,結(jié)果是對(duì)每一個(gè)元素都進(jìn)行了減一的操作,數(shù)組的維度不變,為了滿足取出特定條件的元素這個(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])

由此可見,條件判斷后輸出為和 arr 相同維度的數(shù)組,但是其中每個(gè)元素為布爾類型的值,取值為數(shù)組 arr 對(duì)每個(gè)元素分別進(jìn)行條件判斷的結(jié)果。

下面我們分析對(duì) arr 數(shù)組進(jìn)行特定取值,給其一個(gè)布爾類型的 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è)布爾類型的數(shù)組為 arr_bool ,并且維度與 arr 相同,進(jìn)行直接嵌入實(shí)現(xiàn)了取值,以此完成了我們最終的目的,可以對(duì)任意滿足條件的元素進(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

由上可見,維度必須保持一致,從 arr 數(shù)組里才可以按照 bool 類型取出對(duì)應(yīng)位置為 True 的元素。這個(gè)性質(zhì)幫助我們可以更靈活的處理 numpy 數(shù)組。

PS2: 如何替換滿足條件的元素為其它值呢?

>>> 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ù)組中取出滿足條件的元素示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論