'圖解NumPy,這是理解數組最形象的一份教程了'

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

圖解NumPy,這是理解數組最形象的一份教程了

時間序列數據也是如此(如股票價格隨時間變化)。

圖像

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

如果圖像是黑白(即灰度)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。想要裁剪圖像左上角 10 x 10 的像素嗎?在 NumPy 寫入

即可。

下圖是一個圖像文件的片段:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

圖解NumPy,這是理解數組最形象的一份教程了

時間序列數據也是如此(如股票價格隨時間變化)。

圖像

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

如果圖像是黑白(即灰度)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。想要裁剪圖像左上角 10 x 10 的像素嗎?在 NumPy 寫入

即可。

下圖是一個圖像文件的片段:

圖解NumPy,這是理解數組最形象的一份教程了

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

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

圖解NumPy,這是理解數組最形象的一份教程了

時間序列數據也是如此(如股票價格隨時間變化)。

圖像

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

如果圖像是黑白(即灰度)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。想要裁剪圖像左上角 10 x 10 的像素嗎?在 NumPy 寫入

即可。

下圖是一個圖像文件的片段:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

語言

如果我們處理文本,情況就不同了。文本的數字表示需要一個構建詞彙表的步驟(模型知道的唯一字清單)和嵌入步驟。讓我們看看用數字表示以下文字的步驟:

模型需要先查看大量文本,再用數字表示這位詩人的話語。我們可以讓它處理一個小數據集,並用它來構建一個詞彙表(71,290 個單詞):

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

圖解NumPy,這是理解數組最形象的一份教程了

時間序列數據也是如此(如股票價格隨時間變化)。

圖像

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

如果圖像是黑白(即灰度)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。想要裁剪圖像左上角 10 x 10 的像素嗎?在 NumPy 寫入

即可。

下圖是一個圖像文件的片段:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

語言

如果我們處理文本,情況就不同了。文本的數字表示需要一個構建詞彙表的步驟(模型知道的唯一字清單)和嵌入步驟。讓我們看看用數字表示以下文字的步驟:

模型需要先查看大量文本,再用數字表示這位詩人的話語。我們可以讓它處理一個小數據集,並用它來構建一個詞彙表(71,290 個單詞):

圖解NumPy,這是理解數組最形象的一份教程了

這個句子可以被分成一個 token 數組(基於通用規則的單詞或單詞的一部分):

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

圖解NumPy,這是理解數組最形象的一份教程了

時間序列數據也是如此(如股票價格隨時間變化)。

圖像

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

如果圖像是黑白(即灰度)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。想要裁剪圖像左上角 10 x 10 的像素嗎?在 NumPy 寫入

即可。

下圖是一個圖像文件的片段:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

語言

如果我們處理文本,情況就不同了。文本的數字表示需要一個構建詞彙表的步驟(模型知道的唯一字清單)和嵌入步驟。讓我們看看用數字表示以下文字的步驟:

模型需要先查看大量文本,再用數字表示這位詩人的話語。我們可以讓它處理一個小數據集,並用它來構建一個詞彙表(71,290 個單詞):

圖解NumPy,這是理解數組最形象的一份教程了

這個句子可以被分成一個 token 數組(基於通用規則的單詞或單詞的一部分):

圖解NumPy,這是理解數組最形象的一份教程了

然後我們用詞彙表中的 ID 替換每個單詞:

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

圖解NumPy,這是理解數組最形象的一份教程了

時間序列數據也是如此(如股票價格隨時間變化)。

圖像

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

如果圖像是黑白(即灰度)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。想要裁剪圖像左上角 10 x 10 的像素嗎?在 NumPy 寫入

即可。

下圖是一個圖像文件的片段:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

語言

如果我們處理文本,情況就不同了。文本的數字表示需要一個構建詞彙表的步驟(模型知道的唯一字清單)和嵌入步驟。讓我們看看用數字表示以下文字的步驟:

模型需要先查看大量文本,再用數字表示這位詩人的話語。我們可以讓它處理一個小數據集,並用它來構建一個詞彙表(71,290 個單詞):

圖解NumPy,這是理解數組最形象的一份教程了

這個句子可以被分成一個 token 數組(基於通用規則的單詞或單詞的一部分):

圖解NumPy,這是理解數組最形象的一份教程了

然後我們用詞彙表中的 ID 替換每個單詞:

圖解NumPy,這是理解數組最形象的一份教程了

這些 ID 仍然沒有為模型提供太多信息價值。因此,在將這一組單詞輸入到模型之前,我們需要用嵌入替換 token/單詞(在本例中為 50 維 word2vec 嵌入):

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

圖解NumPy,這是理解數組最形象的一份教程了

時間序列數據也是如此(如股票價格隨時間變化)。

圖像

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

如果圖像是黑白(即灰度)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。想要裁剪圖像左上角 10 x 10 的像素嗎?在 NumPy 寫入

即可。

下圖是一個圖像文件的片段:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

語言

如果我們處理文本,情況就不同了。文本的數字表示需要一個構建詞彙表的步驟(模型知道的唯一字清單)和嵌入步驟。讓我們看看用數字表示以下文字的步驟:

模型需要先查看大量文本,再用數字表示這位詩人的話語。我們可以讓它處理一個小數據集,並用它來構建一個詞彙表(71,290 個單詞):

圖解NumPy,這是理解數組最形象的一份教程了

這個句子可以被分成一個 token 數組(基於通用規則的單詞或單詞的一部分):

圖解NumPy,這是理解數組最形象的一份教程了

然後我們用詞彙表中的 ID 替換每個單詞:

圖解NumPy,這是理解數組最形象的一份教程了

這些 ID 仍然沒有為模型提供太多信息價值。因此,在將這一組單詞輸入到模型之前,我們需要用嵌入替換 token/單詞(在本例中為 50 維 word2vec 嵌入):

圖解NumPy,這是理解數組最形象的一份教程了

可以看到,該 NumPy 數組的維度為 [embedding_dimension x sequence_length]。出於性能原因,深度學習模型傾向於保留批大小的第一維(因為如果並行訓練多個示例,模型訓練速度會加快)。在這種情況下,reshape() 變得非常有用。如像 BERT 這樣的模型期望的輸入形式是:[batch_size,sequence_length,embedding_size]。

"

選自Jay Alammar Blog

作者:Jay Alammar

機器之心編譯

參與:高璇、路

本文用可視化的方式介紹了 NumPy 的功能和使用示例。

圖解NumPy,這是理解數組最形象的一份教程了

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

本文將介紹使用 NumPy 的一些主要方法,以及在將數據送入機器學習模型之前,它如何表示不同類型的數據(表格、圖像、文本等)。

import numpy as np

創建數組

我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。在本例中,python 創建的數組如下圖右所示:

圖解NumPy,這是理解數組最形象的一份教程了

通常我們希望 NumPy 能初始化數組的值,為此 NumPy 提供了 ones()、zeros() 和 random.random() 等方法。我們只需傳遞希望 NumPy 生成的元素數量即可:

圖解NumPy,這是理解數組最形象的一份教程了

一旦創建了數組,我們就可以盡情對它們進行操作。

數組運算

讓我們創建兩個 NumPy 數組來展示數組運算功能。我們將下圖兩個數組稱為 data 和 ones:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。

除了「加」,我們還可以進行如下操作:

圖解NumPy,這是理解數組最形象的一份教程了

通常情況下,我們希望數組和單個數字之間也可以進行運算操作(即向量和標量之間的運算)。比如說,我們的數組表示以英里為單位的距離,我們希望將其單位轉換為千米。只需輸入 data * 1.6 即可:

圖解NumPy,這是理解數組最形象的一份教程了

看到 NumPy 是如何理解這個運算的了嗎?這個概念叫做廣播機制(broadcasting),它非常有用。

索引

我們可以我們像對 python 列表進行切片一樣,對 NumPy 數組進行任意的索引和切片:

圖解NumPy,這是理解數組最形象的一份教程了

聚合

NumPy 還提供聚合功能:

圖解NumPy,這是理解數組最形象的一份教程了

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

更多維度

上述的例子都在一個維度上處理向量。NumPy 之美的關鍵在於,它能夠將上述所有方法應用到任意數量的維度。

創建矩陣

我們可以傳遞下列形狀的 python 列表,使 NumPy 創建一個矩陣來表示它:

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

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣運算

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

圖解NumPy,這是理解數組最形象的一份教程了

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

點乘

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

矩陣索引

當我們處理矩陣時,索引和切片操作變得更加有用:

圖解NumPy,這是理解數組最形象的一份教程了

矩陣聚合

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

轉置和重塑

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

圖解NumPy,這是理解數組最形象的一份教程了

在更高級的實例中,你可能需要變換特定矩陣的維度。在機器學習應用中,經常會這樣:某個模型對輸入形狀的要求與你的數據集不同。在這些情況下,NumPy 的 reshape() 方法就可以發揮作用了。只需將矩陣所需的新維度賦值給它即可。可以為維度賦值-1,NumPy 可以根據你的矩陣推斷出正確的維度:

圖解NumPy,這是理解數組最形象的一份教程了

再多維度

NumPy 可以在任意維度實現上述提到的所有內容。其中心數據結構被叫作 ndarray(N 維數組)不是沒道理的。

圖解NumPy,這是理解數組最形象的一份教程了

在很多情況下,處理一個新的維度只需在 NumPy 函數的參數中添加一個逗號:

圖解NumPy,這是理解數組最形象的一份教程了

實際用法

以下是 NumPy 可實現的有用功能的實例演示。

公式

實現可用於矩陣和向量的數學公式是 NumPy 的關鍵用例。這就是 NumPy 是 python 社區寵兒的原因。例如均方差公式,它是監督

機器學習

模型處理迴歸問題的核心:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

然後將向量平方得到:

圖解NumPy,這是理解數組最形象的一份教程了

現在對這些值求和:

圖解NumPy,這是理解數組最形象的一份教程了

得到的結果即為該預測的誤差值和模型質量評分。

數據表示

考慮所有需要處理和構建模型所需的數據類型(電子表格、圖像、音頻等),其中很多都適合在 n 維數組中表示:

表格和電子表格

電子表格或值表是二維矩陣。電子表格中的每個工作表都可以是它自己的變量。python 中最流行的抽象是 pandas 數據幀,它實際上使用了 NumPy 並在其之上構建。

圖解NumPy,這是理解數組最形象的一份教程了

音頻和時間序列

音頻文件是樣本的一維數組。每個樣本都是一個數字,代表音頻信號的一小部分。CD 質量的音頻每秒包含 44,100 個樣本,每個樣本是-65535 到 65536 之間的整數。這意味著如果你有一個 10 秒的 CD 質量 WAVE 文件,你可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數組中。如果想要提取音頻的第一秒,只需將文件加載到 audio 的 NumPy 數組中,然後獲取 audio[:44100]。

以下是一段音頻文件:

圖解NumPy,這是理解數組最形象的一份教程了

時間序列數據也是如此(如股票價格隨時間變化)。

圖像

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

如果圖像是黑白(即灰度)的,則每個像素都可以用單個數字表示(通常在 0(黑色)和 255(白色)之間)。想要裁剪圖像左上角 10 x 10 的像素嗎?在 NumPy 寫入

即可。

下圖是一個圖像文件的片段:

圖解NumPy,這是理解數組最形象的一份教程了

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

圖解NumPy,這是理解數組最形象的一份教程了

語言

如果我們處理文本,情況就不同了。文本的數字表示需要一個構建詞彙表的步驟(模型知道的唯一字清單)和嵌入步驟。讓我們看看用數字表示以下文字的步驟:

模型需要先查看大量文本,再用數字表示這位詩人的話語。我們可以讓它處理一個小數據集,並用它來構建一個詞彙表(71,290 個單詞):

圖解NumPy,這是理解數組最形象的一份教程了

這個句子可以被分成一個 token 數組(基於通用規則的單詞或單詞的一部分):

圖解NumPy,這是理解數組最形象的一份教程了

然後我們用詞彙表中的 ID 替換每個單詞:

圖解NumPy,這是理解數組最形象的一份教程了

這些 ID 仍然沒有為模型提供太多信息價值。因此,在將這一組單詞輸入到模型之前,我們需要用嵌入替換 token/單詞(在本例中為 50 維 word2vec 嵌入):

圖解NumPy,這是理解數組最形象的一份教程了

可以看到,該 NumPy 數組的維度為 [embedding_dimension x sequence_length]。出於性能原因,深度學習模型傾向於保留批大小的第一維(因為如果並行訓練多個示例,模型訓練速度會加快)。在這種情況下,reshape() 變得非常有用。如像 BERT 這樣的模型期望的輸入形式是:[batch_size,sequence_length,embedding_size]。

圖解NumPy,這是理解數組最形象的一份教程了

現在這是 numeric volume 形式,模型可以處理並執行相應操作。其他行雖然留空,但是它們會被填充其他示例以供模型訓練(或預測)。

"

相關推薦

推薦中...