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

2021-01-14 人工智慧愛好者社區

轉自:數據科學雜談

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年,又一個埋下伏筆的一年!

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

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


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

相關焦點

  • Python Numpy-數組的常用函數
    、power冪運算、cumsum累加函數import numpy as nparr = np.random.randint(1,10,size=(2,5))print(arr)>>>[[5 5 1 4 3] [6 3 2 1 7]]arr.prod()>>>75600
  • 為什麼你用不好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(數據類型)對象的實例,每個對象具有唯一的特徵。
  • 4個Python初學者必學的Numpy小技巧
    下面小芯就基於實踐整理出了Python初學者應該學習的4個numpy技巧,它們能夠幫助你編寫更簡潔易讀的代碼。在學習numpy技巧之前,請確保已熟悉以下文章中的一些Python內置功能。1. 掩碼數組——選擇數據集是不完善的,它們總是包含缺失或無效記錄的數組,而這些記錄是時常需要忽略的。例如,由於傳感器故障,氣象站的測量值可能包含缺失值。
  • Numpy高級操作大全!!!
    此函數需要兩 個參數。3, 2)修改第二個數組的大小:[[1 2 3] [4 5 6] [1 2 3]]修改第三個數組的大小:[[1 2] [3 4]]2.numpy.append函數在輸入數組的末尾添加值。
  • 數據科學中100個Numpy代碼技巧
    此外,它還為數組操作提供了許多數學函數庫。機器學習涉及到對數組的大量轉換和操作,這使得NumPy成為必不可少的工具之一。下面的100個練習都是從numpy郵件列表、stack overflow和numpy文檔中收集的。
  • pandas與numpy中神奇的axis
    pandas與numpy中神奇的axis最近在百奧智匯兼職,基本上比較重的工作就在數據處理,所以pandas和numpy用的比較多。
  • 你(可能)不知道的4個重要Numpy函數
    全文共1260字,預計學習時長4分鐘這確實沒有什麼難懂之處,但是如果你不想自己實現邏輯(提示:這是不應該的),這3個函數十分適合你。argmin()函數將返回最小值的索引。若對之前使用的數組應用這一函數,它將返回最小值的索引位置:你應該已經猜到,argmax()會做相反的事情——返回最大值的索引:另一個好用的函數是argsort(),它將返回已排序數組的索引。
  • D02 Numpy常用函數,如何優雅的遍歷一個多維數組?
    當我們想要遍歷一個多維數組的時候,如果通過不停的使用循環去遍歷,這會讓我們的代碼可讀性與性能都變得很差,numpy提供了一個函數nditer,以幫助我們遍歷數組。nditer的入參是一個數組,返回值是一個可迭代對象。nditer 默認會優先遍歷行序,通過order參數可以使其優先遍歷列序。
  • NumPy ndarray數組的創建
    random_sample生成隨機的浮點數下面來看一些函數的具體使用:import numpy as npnd3 =np.random.random([4, 3]) #生成4行3列的數組print(nd3)print("nd3的形狀為:",nd3.shape)運行結果
  • 深度學習中的NumPy基礎
    在本文中,我將介紹幾個特定的用例,但是與其他 Python 數據結構相比,NumPy 最重要的特性之一是速度。比使用常規的 Python 列表數量級更快。由於 NumPy 函數是在 C 中實現的,除了使執行速度更快,還使 NumPy 能夠分解大型作業並並行執行多個作業。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    一般情況下,DLL函數中傳遞C語言類型的數組,在接收到Python語言中時,通常將其轉換為numpy庫裡面的數組類型,這樣做的好處是可以藉助於numpy強大的分析處理功能對數據直接作後續處理。這次通過例子演示下C語言數組到numpy數組之間是怎樣傳遞的。
  • Numpy應用整理
    , ndmin=2)>>> aarray([[1, 2, 3, 4]])>>> a.shape  # a是一個二維array(1, 4)numpy中常用的函數創建數組numpy.array()首先就是np.array了,可以直接把list轉成ndarray
  • NumPy高效使用邏輯,11個角度理順它!
    之所以性能高是由於它在密集型計算任務中,向量化操作是用C和Fortran代碼實現。2 導入Numpy只需要一行代碼就能導入:from numpy import *在numpy包中,描述向量,矩陣和更高維度的數據集使用的術語是array.
  • Numpy學習打卡task02
    對隨機性的各種應用導致了幾種不同的隨機數據生成方法的發展,其中有些方法自古以來就存在,在其行列中,有眾所周知的 "經典 "例子,包括擲骰子、擲硬幣、撲克牌的洗牌、《易經》中木籤的使用(用於佔卜),以及其他無數的技術。由於這些技術的機械性質,產生大量足夠隨機的數字(在統計學中很重要)需要大量的工作和時間。因此,結果有時會被收集起來,並以隨機數表的形式分發。
  • Python數據分析之numpy數組全解析
    在NumPy 中,最重要的對象是稱為 ndarray 的N維數組類型,它是描述相同類型的元素集合,numpy所有功能幾乎都以ndarray為核心展開。ndarray 中的每個元素都是數據類型對象(dtype)的對象。
  • 數據分析-numpy庫快速了解
    數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據 設置專門的數組對象,經過優化,可以提升這類應用的運算速度觀察:科學計算中,一個維度所有數據的類型往往相同 數組對象採用相同的數據類型,有助於節省運算和存儲空間具體可以看下面一個例子:(來源嵩天老師案例)3.numpy庫怎麼使用先安裝numpy
  • 圖解NumPy:常用函數的內在機制
    除此之外,np.allclose 在絕對值和相對公差的公式方面還有一些小問題,舉個例子,對於給定的 a 和 b,存在 allclose(a, b) != allclose(b, a)。這些問題已在(標量)函數 math.isclose 中得到了解決,我們將在後面介紹它。
  • python數據分析基礎之numpy
    支持高級大量的維度數組與矩陣運算,是學習數據挖掘的基礎,今天我們就來總結下numpy的一些基礎用法。首先,在講numpy之前,我先帶領大家預習下大學學習過的矩陣的基礎知識。1、矩陣的基本概念矩陣:由m×n個數排列成 的m行n列的數表,稱為m行n列矩陣。實矩陣:元素是實數的矩陣。復矩陣:元素是負數的矩陣。