更新時間:2022-10-28 來源:黑馬程序員 瀏覽量:
NumPy的where()函數(shù)是三元表達(dá)式x if condition else y的矢量化版本。
假設(shè)有兩個數(shù)值類型的數(shù)組和一個布爾類型的數(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)在提出一個需求,即當(dāng)arr_con的元素值為True時,從arr_x數(shù)組中獲取一個值,否則從arr_y數(shù)組中獲取一個值。使用where()函數(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()時,傳入的第1個參數(shù)arr_con表示判斷條件,它可以是一個布爾值,也可以是一個數(shù)組,這里傳入的是一個布爾數(shù)組。
當(dāng)滿足條件(從arr_con中取出的元素為True)時,則會獲取arr_x數(shù)組中對應(yīng)位置的值。由于arr_con中索引為0、2的元素為True,所以取出arr_x中相應(yīng)位置的元素1、7。
當(dāng)不滿足條件(從arr_con中取出的元素為False)時,則會獲取arr_y數(shù)組中對應(yīng)位置的值。由于arr_con中索引為1的元素為False,所以取出arr_y中相應(yīng)位置的元素6。
從輸出結(jié)果可以看出,使用where()函數(shù)進(jìn)行數(shù)組運(yùn)算后,返回了一個新的數(shù)組。