教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

大數(shù)據(jù)培訓(xùn):將條件邏輯轉(zhuǎn)為數(shù)組運(yùn)算

更新時(shí)間:2022年09月26日15時(shí)07分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  NumPy數(shù)組可以將許多數(shù)據(jù)處理任務(wù)轉(zhuǎn)換為簡(jiǎn)潔的數(shù)組表達(dá)式,它處理數(shù)據(jù)的速度要比內(nèi)置的Python循環(huán)快了至少一個(gè)數(shù)量級(jí),所以,我們把數(shù)組作為處理數(shù)據(jù)的首選。接下來(lái),本節(jié)重點(diǎn)講下將條件邏輯轉(zhuǎn)為數(shù)組運(yùn)算。

  Numpy的where()函數(shù)是三元表達(dá)式x if condition else y的矢量化版本。

  假設(shè)有兩個(gè)數(shù)值類型的數(shù)組和一個(gè)布爾類型的數(shù)組,具體如下:

In [98]: arr_x=np.array([1, 5, 7])
In [99]: arr_y=np.array([2, 6, 8])
In [100]: arr_con=np.array([True, False, True])

  現(xiàn)在提一個(gè)需求,即當(dāng)arr_con的元素值為True時(shí),從arr_x數(shù)組中獲取一個(gè)值,否則從arr_y數(shù)組中獲取一個(gè)值。使用where()函數(shù)實(shí)現(xiàn)的方式如下所示。

In [101]: result=np.where(arr_con, arr_x, arr_y)
In [102]: result
Out[102]: array([1, 6, 7])

  上述代碼中調(diào)用np.where()時(shí),傳入的第1個(gè)參數(shù)arr_con表示判斷條件,它可以是一個(gè)布爾值,也可以是一個(gè)數(shù)組,這里傳入的是一個(gè)布爾數(shù)組。

  當(dāng)滿足條件(從arr_con中取出的元素為True)時(shí),則會(huì)獲取arr_x數(shù)組中對(duì)應(yīng)位置的值。由于arr_con中索引為0、2的元素為True,所以取出arr_x中相應(yīng)位置的元素1、7。

  當(dāng)不滿足條件(從arr_con中取出的元素為False)時(shí),則會(huì)獲取arr_y數(shù)組中對(duì)應(yīng)位置的值。由于arr_con中索引為1的元素為False,所以取出arr_y中相應(yīng)位置的元素6.

  從輸出結(jié)果可以看出,使用where()函數(shù)進(jìn)行數(shù)組運(yùn)算后,返回了一個(gè)新的數(shù)組。

0 分享到:
和我們?cè)诰€交談!