Numpy 功能十分強大,很多我們想要的復雜操作都有實現。今天分享幾個數據分析中經常需要用到的重要函數。掌握這些函數可以幫助我們保持代碼整潔并且避免重復造輪子。
準備工作
導入numpy
import numpy as np
示例數據
本文以二分類任務為例,通常我們的model會輸出預測的概率,得到概率后需要進行后續的處理,比如:
?根據閾值,將概率大于某個閾值的label設置為1,小于閾值的設置為0?在模型診斷過程中,找出滿足某些條件的樣本
本文使用的示例數據如下:
predict_prob = np.array([0.1,0.3,0.7,0.4,0.9])
where()
np.where() 方法可以幫助我們找到array中滿足條件的元素的位置。現在我們可以使用np.where()找出所有預測概率大于0.5的的元素了:
predict_prob = np.array([0.1,0.3,0.7,0.4,0.9])np.where(predict_prob > 0.5)# output:array([2, 4]),)
如果我們想將所有概率大于0.5的元素替換為1,否則替換為0,該怎么做呢?
一個簡單粗暴的方式是先用上面的方法分別找出array中概率大于或者小于0.5的索引,然后再對這些位置的元素重新賦值。
其實,np.where() 一個函數就能完成所有的操作,只需要添加兩個參數:
?第一個參數是滿足條件替換的值?第二個參數是不滿足條件替換的值
predict_prob = np.array([0.1,0.3,0.7,0.4,0.9])np.where(predict_prob > 0.5, 1, 0)# output: array([0, 0, 1, 0, 1])
argmin()、argmax()、argsort()
np.argmin()、np.argmax()方法會返回array中最小或最大的元素索引,對示例數據運行結果如下:
predict_prob = np.array([0.1,0.3,0.7,0.4,0.9]) np.argmax(predict_prob)# output: 4np.argmin(predict_prob)# output: 0
我們成功找到了array中最大最小的元素索引,那怎樣找到前n個最大的或最小的值呢?
現在該輪到np.sort()上場了
predict_prob = np.array([0.1,0.3,0.7,0.4,0.9])np.argsort(predict_prob)# output: array([0, 1, 3, 2, 4])
np.argsort()方法還支持多維數據的排序,感興趣的可以自行查看Numpy官方文檔[1]
intersect1d()
intersect1d()要做的是,它會找出兩個array中的交集,這個函數和前面的幾個函數不同,返回的不是索引位置,而是array中的實際值。
本函數我們使用新的示例數據:
arr1 = np.array([1,2,4,4,6])arr2 = np.array([2,3,4,5,6])
現在,我們可以使用intersect1d()找出兩個數組共同的元素了:
np.intersect1d(arr1, arr2)# output: array([2, 4, 6])
-
閾值
+關注
關注
0文章
123瀏覽量
18552 -
函數
+關注
關注
3文章
4346瀏覽量
62979 -
數據分析
+關注
關注
2文章
1461瀏覽量
34169
原文標題:Numpy 中不得不知的4個重要函數
文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
如果用ADS129X采集EEG信號,需要用到右腿驅動嗎?
n型焊接頭需要用到哪些材料
![n型焊接頭<b class='flag-5'>需要用到</b>哪些材料](https://file1.elecfans.com/web1/M00/F5/7B/wKgaoWc9TsmAffgvAADPZU3PhRE272.png)
ADS9234R這個AD的寄存器如何配置,需要用到哪幾個引腳?
SUMIF函數在數據分析中的應用
在進行高速信號放大設計時,往往需要用到反饋電路,是否反饋電路越短越好?
射頻連接器mcx需要用到護線套嗎
![射頻連接器mcx<b class='flag-5'>需要用到</b>護線套嗎](https://file1.elecfans.com/web2/M00/FE/0D/wKgZomagVCqAfc-eAADMgIN9HQI291.png)
評論