天天看點

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

本文精心翻譯自Jay Alammar的部落格:https://jalammar.github.io/visual-numpy/,其用圖解的方式詳細介紹了 NumPy的功能和使用示例。
numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

NumPy 是 Python 生态中資料分析、機器學習和科學計算的基礎。它極大地簡化了向量和矩陣的操作處理。Python 的一些主要軟體包(如 scikit-learn、SciPy、pandas 和 tensorflow)都以 NumPy 作為其架構的基礎部分。除了能對數值資料進行切片(slice)和切塊(dice)之外,使用 NumPy 還能為處理和調試上述庫中的進階執行個體帶來極大的便利。

本文将介紹 NumPy 的一些主要方法,以及在将資料送入機器學習模型之前,numpy是如何表示不同類型資料(表格、圖像、文本等)的。

import numpy as np
           

建立數組

通過傳遞一個 python 清單,并使用 np.array()來建立 NumPy 數組。python 建立的數組如下圖右所示:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

NumPy 提供了一些初始化數組的方法,例如 ones()、zeros() 和 random.random() 等方法。隻要傳遞希望 NumPy 生成的元素維數即可:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

一旦建立了數組,就可以随意操作啦。

數組運算

下面建立兩個 NumPy 數組來展示數組運算功能。下圖兩個數組分别為 data 和 ones:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

将它們按位置相加(即每行對應相加),直接輸入 data + ones 即可:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

除了加,還可以進行如下操作:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

數組和單個數字之間也可以進行運算操作(即向量和标量之間的運算)。比如說,數組表示以英裡為機關的距離,希望将其機關轉換為千米。隻需輸入 data * 1.6 即可:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

NumPy 是通過廣播機制(broadcasting)來實作的,通過判斷維數,來推測要進行的運算。

索引

可以像對 python 清單進行切片一樣,對 NumPy 數組進行任意的索引和切片:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

聚合

NumPy 還提供聚合功能:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

除了 min、max 和 sum 之外,還可以使用 mean 得到平均值,使用 prod 得到所有元素的乘積,使用 std 得到标準差等等。

更多元度

上述的例子都是在一個次元上處理向量。NumPy 優雅的關鍵在于能夠将上述所有方法應用到任意數量的次元。

建立矩陣

可以傳遞下列形狀的 python 清單,使 NumPy 建立一個矩陣來表示它:

np.array([[1,2],[3,4]])
           

也可以使用上面提到的方法(ones()、zeros() 和 random.random()),隻要傳入一個描述建立的矩陣維數的元組即可:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

矩陣運算

如果兩個矩陣大小相同,可以使用算術運算符(+-*/)對矩陣進行加和乘。NumPy 将其視為 position-wise 運算:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

也可以對不同大小的兩個矩陣執行此類算術運算,但前提是某一個次元為 1(如矩陣隻有一列或一行),在這種情況下,NumPy 使用廣播規則執行算術運算:

點乘

算術運算和矩陣運算的一個關鍵差別是矩陣乘法使用點乘。NumPy 為每個矩陣賦予 dot() 方法,可以用它與其他矩陣執行點乘操作:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

在上圖的右下角添加了矩陣維數,來強調這兩個矩陣的臨近邊必須有相同的維數。可以把上述運算視為:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

矩陣索引

當處理矩陣時,索引和切片操作将更加有用:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

矩陣聚合

可以像聚合向量一樣聚合矩陣:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

不僅可以聚合矩陣中的所有值,還可以使用 axis 參數執行跨行或跨列聚合:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

轉置和次元重塑

處理矩陣時的一個常見需求是旋轉矩陣。當需要對兩個矩陣執行點乘運算并對齊它們共享的次元時,通常需要進行轉置。NumPy 數組有一個友善的方法 T 來求得矩陣轉置:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

在某些應用中,需要對特定矩陣的變換次元。在機器學習應用中,經常會有當某個模型對輸入形狀的要求與的資料集不同。NumPy 中的 reshape() 方法就可以發揮作用。隻需将矩陣所需的新次元指派給它即可。可以為次元指派-1,NumPy 可以根據的矩陣推斷出正确的次元:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

更多元度

NumPy 可以在任意次元實作上述提到的所有内容。其中心資料結構被叫作 ndarray(N 維數組)。

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

在很多情況下,處理一個新的次元隻需在 NumPy 函數的參數中添加一個逗号:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

實際用法

以下是 NumPy 可實作的有用功能的執行個體示範。

公式

均方差公式,它是監督機器學習模型處理回歸問題的核心:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

在 NumPy 中實作該公式很容易:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

這樣做的好處在于,NumPy 并不關心 predictions 和 labels 包含一個值還是一千個值(隻要它們大小相同)。可以通過一個示例依次執行上面代碼行中的四個操作:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

預測和标簽向量都包含三個值,也就是說 n 的值為 3。減法後,得到的值如下:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

然後将向量平方得到:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

對這些值求和:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

得到的結果即為該預測的誤內插補點和模型品質評分。

資料表達

電子表格、圖像、音頻等需要處理和構模組化型所需的資料類型,其中很多都适合在 n 維數組中表示:

表格

電子表格就是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的表格抽象是 pandas 資料幀,其在 NumPy 之上建構。

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

音頻

音頻檔案是樣本的一維數組。每個樣本都是一個數字,代表音頻信号的一小部分。CD 品質的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味着如果有一個 10 秒的 CD 品質 WAVE 檔案,可以将它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的前一秒,隻需将檔案加載到 audio 的 NumPy 數組中,然後擷取 audio[:44100]。

下面是一段音頻檔案:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

其他時間序列資料也可以同樣表示(如股票随時間變化的價格)。

圖像

圖像是尺寸(高度 x 寬度)的像素矩陣。

如果圖像是黑白(即灰階)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。

下圖是一個圖像檔案的部分:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

如果圖像是彩色的,則每個像素由三個數字表示———紅、綠和藍。在這種情況下,需要一個三維數組(因為每個單元格隻能包含一個數字)。是以彩色圖像由尺寸為(高 x 寬 x3)的 ndarray 表示:

numpy 建立加一行_圖解Numpy精翻版,一文帶你入門Python資料處理數組運算索引聚合建立矩陣矩陣運算點乘矩陣索引矩陣聚合轉置和次元重塑更多元度公式表格音頻圖像

歡迎關注全平台AI自媒體 “AI新視野”,

第一時間擷取人工智能學術、産業前沿!

繼續閱讀