Numpy 中不得不知的4個重要函數

2021-03-02 人工智慧愛好者社區

轉自:數據科學雜談

Numpy 功能十分強大,很多我們想要的複雜操作都有實現。今天分享幾個數據分析中經常需要用到的重要函數。掌握這些函數可以幫助我們保持代碼整潔並且避免重複造輪子。

準備工作導入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年,又一個埋下伏筆的一年!

程式設計師有了孩子,老大叫玲玲,老二叫玲依,老三叫...

一個程式設計師要被打多少次臉?

親愛的,給我一個在看哈!

相關焦點

  • 五分鐘了解這幾個numpy的重要函數
    本文將基於numpy模塊實現常規線性代數的求解問題,需要注意的是,有一些線性代數的運算並不是直接調用numpy模塊,而是調用numpy的子模塊linalg(線性代數的縮寫)。該子模塊涵蓋了線性代數所需的很多功能,本文將挑幾個重要的例子加以說明。
  • Python擴展庫numpy中where()函數的三種用法
    第二種用法:給where()函數傳遞一個包含True/False值的數組,返回該數組中True值的下標,結合numpy數組的關係運算,可以返回數組中符合特定條件的元素的下標。第三種用法:給where()函數傳遞一個條件數組和兩個值或數組,對於條件數組中等價於True的位置,從第一個值或數組中取值進行替換,否則從第二個值或數組中取值進行替換。
  • NumPy ufunc通用函數
    ufunc 是 universal function 的縮寫,意思是「通用函數」,它是一種能對數組的每個元素進行操作的函數。許多 ufunc 函數都是用C語言級別實現的,因此它們的計算速度非常快。此外,ufun 比 math 模塊中的函數更靈活。
  • numpy中數組操作的相關函數
    在numpy中,有一系列對數組進行操作的函數,在使用這些函數之前,必須先了解以下兩個基本概念副本視圖副本是一個數組的完整拷貝
  • 學習Python必知的Numpy函數
    大量的擴展包是 Python 的一大特色,包括各種適用於數據分析的例程和函數。有了這些擴展包,數據科學家們可以不用重複造輪子,節省了很多時間。其中一個重要的數學擴展包就是 NumPy。NumPy 是一個基礎數學包,以其高效的多維數組函數而聞名,適用於線性代數,傅立葉變換,邏輯運算等。
  • 第89天:NumPy 排序和篩選函數
    排序算法速度時間複雜度空間複雜度穩定性quicksort(快速排序)1o(n^2)0否mergesort(歸併排序)2O(n*log(n))~n/2是heapsort(堆排序)3O(n*log(n))0否numpy.sort(a, axis, kind, order)這個排序函數有4個參數,我們來看看參數的說明:參數說明a要排序的數組axis排序數組的軸,如果沒有數組會被展開,
  • Numpy中的通用函數
    NumPy數組的計算:通用函數緩慢的循環通用函數介紹探索Numpy的通用函數高級通用函數的特性聚合:最小值、 最大值和其他值數組值求和最大值和最小值其他聚合函數《Python數據科學手冊》讀書筆記NumPy數組的計算:通用函數NumPy 數組的計算有時非常快, 有時也非常慢。
  • 為什麼你用不好Numpy的random函數?
    在python數據分析的學習和應用過程中,經常需要用到numpy的隨機函數,由於隨機函數random的功能比較多,經常會混淆或記不住
  • Python中的Numpy基礎20問
    比如說取一維數組前三個元素。import numpy as np# 創建一維數組x1 = np.array([1,2,3,4])# 切片,取前三個元素x1[:3]'''輸出:array([1, 2, 3])'''重點是對多維數組的索引和切片。多維數組有多個軸,那麼就需要對每個軸進行索引。例如,三維數組形狀為(x,y,z),分別代表:0軸有x個元素、1軸有y個元素,2軸有z個元素。
  • Python中NumPy簡介及使用舉例
    NumPy中定義的最重要的對象是稱為ndarray的N維數組類型。它描述相同類型的元素集合,可以使用基於零的索引訪問集合中元素。基本的ndarray是使用NumPy中的數組函數創建的: numpy.array。NumPy支持比Python更多種類的數值類型。NumPy數值是dtype(數據類型)對象的實例,每個對象具有唯一的特徵。
  • 5個高效&簡潔的Numpy函數
    當使用 -1 參數時,與-1 相對應的維數將是原始數組的維數除以新形狀中已給出維數的乘積,以便維持相同數量的元素。Argpartition:在數組中找到最大的 N 個元素。Numpy 的 argpartion 函數可以高效地找到 N 個最大值的索引並返回 N 個值。在給出索引後,我們可以根據需要進行值排序。
  • Numpy高級操作大全!!!
    此函數需要兩 個參數。3, 2)修改第二個數組的大小:[[1 2 3] [4 5 6] [1 2 3]]修改第三個數組的大小:[[1 2] [3 4]]2.numpy.append函數在輸入數組的末尾添加值。
  • Pandas 3個不為人知卻好用的函數
    在前文— Numpy
  • 4個Python初學者必學的Numpy小技巧
    下面小芯就基於實踐整理出了Python初學者應該學習的4個numpy技巧,它們能夠幫助你編寫更簡潔易讀的代碼。在學習numpy技巧之前,請確保已熟悉以下文章中的一些Python內置功能。1.Numpy有一個子模塊numpy.ma,它支持帶掩碼的數據數組。帶掩碼的數組包含一個普通的numpy數組和一個指示無效記錄位置的掩碼。np.ma.MaskedArray(data=arr,mask=invalid_mask)有時使用負值或字符串標記數組中的無效記錄。
  • 數據科學中100個Numpy代碼技巧
    此外,它還為數組操作提供了許多數學函數庫。機器學習涉及到對數組的大量轉換和操作,這使得NumPy成為必不可少的工具之一。下面的100個練習都是從numpy郵件列表、stack overflow和numpy文檔中收集的。
  • NumPy完整剖析篇
    ,ones可以分別創建指定長度或者形狀的全為零,全為一的數組import numpy as npprint(np.zeros(10)) print(np.zeros((2, 3))) print(np.ones(10)) print(np.ones((2, 3))) 還有個empty函數可以創建一個沒有任何具體值的數組,即它的值是隨機生成的數
  • 最全的NumPy教程
    numpy.char類中的上述函數在執行向量化字符串操作時非常有用。函數說明如下:numpy.amin() 和 numpy.amax()這些函數從給定數組中的元素沿指定軸返回最小值和最大值。numpy.ptp()numpy.ptp()函數返回沿軸的值的範圍(最大值 - 最小值)。numpy.percentile()百分位數是統計中使用的度量,表示小於這個值得觀察值佔某個百分比。
  • 【每天15分鐘,5天學會NumPy】第4天:常用函數
    ., 4., 3.])2.#65>", line 1, in <module> a.where(a>0.5)AttributeError: 'numpy.ndarray' object has no attribute 'where'以上這些差異,取決於函數在不同的的命名空間是否有映射。
  • 趣Python [11] - NumPy中常用統計函數梳理
    在使用NumPy進行數據操作時,本文對於常用的統計函數做了詳細的梳理,我們一起看下吧。import numpy as npnp.random.seed(66) # 設置隨機種子arr = np.random.randint(1, 10, size=(2,2))print('創建的單維數組為:', arr)# 常用統計函數print('數組的最大值為:',np.max
  • Numpy 使用簡介
    學習目標:1.創建Numpy 數組2.Numpy數組的簡單運算運算3.從numpy數組中提取信息4.對numpy數組中的元素進行排序5.連接(concatenate) numpy數組如果您閱讀了之前的幾篇推送,相信您已經對python語言以及電腦程式設計有了一定的了解。