新聞中心
Numpy的where函數(shù)是一個非常有用的函數(shù),它可以幫助我們在數(shù)組中根據(jù)指定的條件替換元素,這個函數(shù)的基本語法如下:

成都創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設服務有成都網(wǎng)站設計、做網(wǎng)站、網(wǎng)絡營銷策劃、網(wǎng)頁設計、網(wǎng)站維護、公眾號搭建、小程序設計、軟件開發(fā)等為企業(yè)提供一整套的信息化建設解決方案。創(chuàng)造真正意義上的網(wǎng)站建設,為互聯(lián)網(wǎng)品牌在互動行銷領域創(chuàng)造價值而不懈努力!
numpy.where(condition[, x, y])
condition是一個布爾數(shù)組,表示我們想要替換元素的條件;x和y是我們想要替換成的值,它們可以是標量、數(shù)組或者其它數(shù)據(jù)類型。
下面我們來看一些具體的使用例子。
1、使用單個條件替換元素
假設我們有一個數(shù)組a,我們想要將數(shù)組中所有大于0的元素替換為1,所有小于0的元素替換為1,可以使用以下代碼:
import numpy as np a = np.array([2, 1, 0, 1, 2]) result = np.where(a > 0, 1, a) print(result)
輸出結果為:[2 1 0 1 1]
可以看到,數(shù)組中所有大于0的元素都被替換為了1,而所有小于0的元素則被替換為了1。
2、使用多個條件替換元素
我們需要根據(jù)多個條件來替換元素,我們有一個數(shù)組b,我們想要將數(shù)組中所有大于0且小于5的元素替換為3,所有大于5的元素替換為5,可以使用以下代碼:
import numpy as np b = np.array([2, 1, 0, 1, 2, 6]) result = np.where((b > 0) & (b < 5), 3, np.where(b > 5, 5, b)) print(result)
輸出結果為:[2 1 3 3 3 5]
可以看到,數(shù)組中所有大于0且小于5的元素都被替換為了3,而所有大于5的元素則被替換為了5。
3、根據(jù)條件選擇多個值進行替換
我們需要根據(jù)條件選擇不同的值進行替換,我們有一個數(shù)組c,我們想要將數(shù)組中所有大于0的元素替換為1或2,可以根據(jù)元素的位置來決定替換成哪個值,可以使用以下代碼:
import numpy as np c = np.array([2, 1, 0, 1, 2]) result = np.where(c > 0, np.random.choice([1, 2], size=len(c)), c) print(result)
輸出結果為:[2 1 2 1 2](由于是隨機選擇的,所以每次運行結果可能不同)
可以看到,數(shù)組中所有大于0的元素都被替換為了1或2,而所有小于等于0的元素則保持不變。
4、根據(jù)條件選擇多個值進行替換(多維數(shù)組)
對于多維數(shù)組,我們可以使用相同的方法進行替換,我們有一個二維數(shù)組d,我們想要將數(shù)組中所有大于0的元素替換為1或2,可以根據(jù)元素的位置來決定替換成哪個值,可以使用以下代碼:
import numpy as np d = np.array([[2, 1], [0, 1], [2, 3]]) result = np.where(d > 0, np.random.choice([1, 2], size=d.shape), d) print(result)
輸出結果為:[[2 1 2 1] [2 1 1 3] [2 1 2 3]](由于是隨機選擇的,所以每次運行結果可能不同)
可以看到,數(shù)組中所有大于0的元素都被替換為了1或2,而所有小于等于0的元素則保持不變,我們可以看到where函數(shù)可以自動處理多維數(shù)組的廣播。
Numpy的where函數(shù)是一個非常強大的函數(shù),它可以幫助我們根據(jù)指定的條件替換數(shù)組中的元素,通過組合不同的條件和值,我們可以實現(xiàn)非常靈活的替換操作,需要注意的是,where函數(shù)返回的是一個視圖對象,而不是一個新的數(shù)組,這意味著對返回的結果進行修改會影響到原始數(shù)組,如果需要創(chuàng)建一個新的數(shù)組,可以使用copy()方法。
分享文章:多個條件使用Numpywhere函數(shù)
文章鏈接:http://m.5511xx.com/article/cogcdhc.html


咨詢
建站咨詢
