掌握 NumPy:初始化方式、Ndarray 操作和函數
已發表: 2021-01-05Numpy 是一個 Python 包,它允許對高維數據以高效和抽象的功能執行數學和數值運算。 在為特定業務用例構建機器學習解決方案時,以使預處理變得容易且結果可解釋的方式轉換數據變得非常重要。 Numpy 是核心庫,它可以以最佳方式執行所有相關功能。
目錄
為什麼選擇 NumPy?
其他數據科學庫,如 Pandas、Matplotlib 和 Scikit-learn,是基於 Numpy 構建的,因為它具有高性能。 這個庫提供了 ndarray 來代替內置的 python 列表。 Python list 非常適合存儲值,但它的代價是增加了執行時間,因為它存儲了內存位置的指針,這增加了內存和執行方面的開銷。
Numpy 直接用於圖像處理領域,其中圖像被處理為高多維矩陣以執行各種變換,例如模糊、顏色變化和對象檢測。
讓我們看一下每個數據科學有志者應該知道的一些重要的 Numpy 函數,但在此之前:
- 下面的所有函數代碼都假設該庫已使用別名 np 導入,即 import numpy as np.
- 在此之後,術語“數組”將用於定義 ndarray。
不同的初始化方式
1. 線性間隔
此函數旨在提供值範圍內的線性間隔數組。 函數 np.linspace(start, stop, num) 其中 start 和 stop 定義值的範圍, num 定義樣本的數量,返回均勻間隔的值,而 np.arange(start, stop, step) 返回不同的值步值。
2. 特殊價值觀
在許多情況下,您可能希望使用諸如 1、0、恆等值或常量值之類的值來初始化大型矩陣。 數組的大小作為元組傳遞。 Numpy 通過不同的功能促進了這一點:
- np.zeros(size):元素為零
- np.ones(size): 元素是個
- np.full(size, constant value):元素是常量值傳遞。
- np.eye(size):對角線元素為 1,其餘為 0。 這是單位矩陣。
- np.empty(size): 空矩陣
- np.random.random(size):隨機值矩陣被初始化為指定大小。
閱讀:Numpy 面試問題
Ndarray 操作
這個庫的主要目的是不同數組之間的高效計算。 Numpy 支持幾乎所有類型的逐元素應用的數學運算和操作。 下面列出了其中的一些(假設兩個大小相同的數組 A 和 B 用隨機值初始化):
1. 數學
- np.add(A, B):加法
- np.subtract(A, B):減法
- np.divide(A, B):除法
- np.multiply(A, B):乘法
- np.exp(A):指數值
- np.sqrt(A):平方根值
- np.sin(A), cos(A), tan(A):三角函數值
- np.log(A):對數值
- np.percentile(A, percentile required, axis):在傳遞百分位值時,例如 50,函數將返回數組的第 50 個百分位。
- A.dot(B):返回數組的點積
- A == B:元素比較
- np.array_equal(A, B):數組比較
- A.sum():所有元素的總和
- A.min(), max():最小值和最大值
- A.cumsum():數組元素的累積和
- A.corrcoef():相關係數
2. 操作
- np.transpose(A) 或 AT:矩陣的轉置
- A.ravel():展平數組
- A.reshape(new_shape):對數組進行整形(這裡直接傳遞大小而不放入元組)。 新尺寸應與
- A.resize(size):將數組的形狀更改為任意形狀,並丟棄不屬於這個新形狀的其他元素。
- np.concatenate((A,B),軸= 1或0)
- np.vstack((A,B)):垂直堆疊數組(逐行)
- np.hstack((A,B)):水平堆棧
退房:Numpy vs Panda:兩者的區別

雜項功能
- np.where():這是一個基本函數,它消除了對 if-else 語句的需求。 它需要 3 個重要參數:條件、條件是否滿足的值和不滿足的值。 一個簡單的例子是當您必鬚根據給定閾值對列進行二值化時。
- np.intersect1d():此函數返回兩個一維數組的交集。 這意味著這些數組的公共值由該函數返回。 如果傳遞的數組不是一維的,那麼它會被展平。
- np.allclose():這是一個有趣的函數。 在某些情況下,您可以在比較數組時承受一定程度的容差,或者您想發現相似的數組。 這個函數接受你想要的數組和公差值。 例如:
- arr1 = np.array([1,2,3,4])
- arr2 = np.array([2,3,4,5])
- np.allclose(arr1, arr2, 0.5) :將返回 False
- np.allclose(arr1, arr2, 1): 將返回 True
- argmin()、argmax() 和 argsort():顧名思義,這些函數返回各自名稱的索引。 A.argmin() 返回最小元素索引,A.argmax() 相反,A.argsort() 返回排序數組的索引。 在結果取決於索引的情況下,這些函數可以派上用場。
- np.clip():用於轉換特定範圍內的值。 例如,如果一個數組的值介於 1 到 30 之間,並且您想要 14 到 27 之間的值而不丟失其他值,則此函數會將小於 19 的值放大到 19,並將大於 27 的值縮小到 27。
結論
對 numpy 數組進行操作時還有更多功能,但這些是最常用的功能。 應用於 Pandas 列或系列的操作實際上是在 ndarray 上,因為該系列是一維 ndarray。
Numpy 是一個很好的工具,可以生成假數據以測試特定算法或模擬場景。 它廣泛用於計算機視覺應用中,其中圖像被轉換為多維矩陣以執行所需的操作,或者在深度學習中,神經網絡權重由這些 ndarray 保存。
如果您想了解數據科學,請查看 IIIT-B 和 upGrad 的數據科學 PG 文憑,該文憑專為在職專業人士而設,提供 10 多個案例研究和項目、實用的實踐研討會、與行業專家的指導、1-與行業導師面對面交流,400 多個小時的學習和頂級公司的工作協助。