轉自:數據科學雜談
Numpy 功能十分強大,很多我們想要的複雜操作都有實現。今天分享幾個數據分析中經常需要用到的重要函數。掌握這些函數可以幫助我們保持代碼整潔並且避免重複造輪子。
本文以二分類任務為例,通常我們的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)推薦閱讀
漫畫:程式設計師一時單身一時爽,一直單身...有點慘
2019年,又一個埋下伏筆的一年!
程式設計師有了孩子,老大叫玲玲,老二叫玲依,老三叫...
一個程式設計師要被打多少次臉?
親愛的,給我一個在看哈!