1. 從零搭建NumPy環境:安裝指南與初體驗
NumPy核心能力圖解(架構圖)
NumPy 是 Python 中用于科學計算的核心庫,它提供了高效的多維數組對象以及用于處理這些數組的各種操作。NumPy 的核心能力可以概括為以下幾個方面:
- 高效數組操作:NumPy 數組(
ndarray
)比 Python 列表更高效,支持向量化操作。 - 數學函數:提供了豐富的數學函數,如三角函數、指數函數、對數函數等。
- 線性代數:支持矩陣運算、特征值分解、奇異值分解等。
- 隨機數生成:提供了多種隨機數生成器,用于模擬數據等。
- 廣播機制:支持不同形狀的數組之間的運算。
- 文件讀寫:支持多種文件格式的讀寫操作,如
.npy
、.npz
等。 - 傅里葉變換:支持頻域和時域之間的轉換。
- 集合操作:支持集合的交集、并集、差集等操作。
下面是 NumPy 的架構圖:
Anaconda/Pip雙環境安裝指南(含版本選擇建議)
NumPy 可以通過多種方式安裝,其中最常用的兩種方式是使用 Anaconda 和 Pip。下面我們將詳細介紹這兩種方式的安裝步驟,并提供版本選擇建議。
1.1 使用 Anaconda 安裝 NumPy
步驟 1:下載 Anaconda
首先,訪問 Anaconda 官方網站并下載最新版本的 Anaconda。Anaconda 為不同的操作系統提供了不同的安裝包,確保選擇與你當前操作系統相匹配的版本。
- Windows:https://www.anaconda.com/products/distribution#download-section
- Mac:https://www.anaconda.com/products/distribution#download-section
- Linux:https://www.anaconda.com/products/distribution#download-section
步驟 2:安裝 Anaconda
按照下載的安裝包中的說明進行安裝。安裝過程中,建議選擇默認選項,特別是將 Anaconda 添加到系統路徑中。
步驟 3:創建并激活環境
打開 Anaconda Prompt(Windows)或終端(Mac/Linux),創建一個新的環境并激活它。
conda create -n numpy_env python=3.9 # 創建名為 numpy_env 的環境,并指定 Python 版本為 3.9
conda activate numpy_env # 激活環境
步驟 4:安裝 NumPy
在激活的環境中,使用以下命令安裝 NumPy:
conda install numpy # 安裝 NumPy
1.2 使用 Pip 安裝 NumPy
步驟 1:安裝 Python
確保你的系統已經安裝了 Python。你可以從 Python 官方網站下載并安裝最新版本的 Python。
- Windows:https://www.python.org/downloads/windows/
- Mac:https://www.python.org/downloads/macos/
- Linux:大多數 Linux 發行版已經預裝了 Python,如果沒有,可以使用包管理器安裝。
步驟 2:安裝 Pip
大多數情況下,Python 安裝時會自帶 Pip。你可以通過以下命令檢查 Pip 是否已安裝:
python -m pip --version # 檢查 Pip 版本
如果沒有安裝,可以使用以下命令安裝:
python -m ensurepip --upgrade # 安裝并升級 Pip
步驟 3:創建并激活虛擬環境
推薦使用虛擬環境來管理 Python 項目依賴。你可以使用 venv
模塊創建虛擬環境。
python -m venv numpy_env # 創建名為 numpy_env 的虛擬環境
source numpy_env/bin/activate # 激活環境(Linux/Mac)
numpy_env\Scripts\activate # 激活環境(Windows)
步驟 4:安裝 NumPy
在激活的虛擬環境中,使用以下命令安裝 NumPy:
pip install numpy # 安裝 NumPy
三平臺安裝步驟對比表格
步驟 | Anaconda | Pip |
---|---|---|
1. 下載 | 訪問 Anaconda 官方網站下載安裝包 | 確保系統已安裝 Python |
2. 安裝 | 按照安裝包說明進行安裝 | 從 Python 官方網站下載并安裝 |
3. 創建環境 | conda create -n numpy_env python=3.9 | python -m venv numpy_env |
4. 激活環境 | conda activate numpy_env | source numpy_env/bin/activate (Linux/Mac)numpy_env\Scripts\activate (Windows) |
5. 安裝 NumPy | conda install numpy | pip install numpy |
驗證安裝的3種方法
1.3.1 終端命令驗證
方法 1:檢查 NumPy 版本
python -c "import numpy as np; print(np.__version__)" # 檢查 NumPy 版本
方法 2:列出已安裝的包
conda list numpy # 列出 Anaconda 環境中已安裝的 NumPy 包
pip list | grep numpy # 列出 Pip 環境中已安裝的 NumPy 包
1.3.2 Python 代碼驗證
方法 3:運行簡單的 NumPy 代碼
import numpy as np# 創建一個 3x3 的數組
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("創建的 3x3 數組:")
print(array)# 計算數組的平均值
mean_value = np.mean(array)
print("數組的平均值:", mean_value)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 創建一個 3x3 的數組
# np.array 是 NumPy 中用于創建數組的函數
# 傳入一個二維列表,其中每個子列表代表數組的一行
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("創建的 3x3 數組:") # 打印數組
print(array)# 計算數組的平均值
# np.mean 是 NumPy 中用于計算平均值的函數
# 傳入數組作為參數
mean_value = np.mean(array)
print("數組的平均值:", mean_value) # 打印平均值
常見安裝報錯解決方案(附錯誤截圖示例)
問題 1:Pip 安裝時報錯
錯誤示例:
ERROR: Could not find a version that satisfies the requirement numpy (from versions: none)
ERROR: No matching distribution found for numpy
解決方案:
-
確保你的網絡連接正常。
-
升級 Pip 到最新版本:
pip install --upgrade pip
-
如果仍然報錯,可以嘗試使用國內的鏡像源:
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
問題 2:Anaconda 安裝時報錯
錯誤示例:
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
解決方案:
-
重啟 Anaconda Prompt 或終端。
-
清除緩存并重新安裝:
conda clean --all conda install numpy
-
如果仍然報錯,可以嘗試使用國內的鏡像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda install numpy
問題 3:虛擬環境無法激活
錯誤示例:
source: command not found
解決方案:
- 確保你使用的是正確的激活命令。在 Windows 上使用
numpy_env\Scripts\activate
,在 Linux/Mac 上使用source numpy_env/bin/activate
。 - 檢查虛擬環境目錄是否存在,并且路徑正確。
第一個NumPy程序:數組創建與基礎運算
1.4.1 創建數組
NumPy 提供了多種創建數組的方法,包括從列表創建、從文件讀取、隨機生成等。下面我們將介紹最常見的幾種方法。
1. 從列表創建數組
import numpy as np# 從列表創建一維數組
one_d_array = np.array([1, 2, 3, 4, 5])
print("一維數組:")
print(one_d_array)# 從列表創建二維數組
two_d_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二維數組:")
print(two_d_array)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 從列表創建一維數組
# np.array 是 NumPy 中用于創建數組的函數
# 傳入一個一維列表,創建一個一維數組
one_d_array = np.array([1, 2, 3, 4, 5])
print("一維數組:") # 打印一維數組
print(one_d_array)# 從列表創建二維數組
# 傳入一個二維列表,其中每個子列表代表數組的一行
two_d_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二維數組:") # 打印二維數組
print(two_d_array)
2. 從文件讀取數組
NumPy 支持從多種文件格式讀取數組,最常用的是 .npy
和 .npz
文件。
import numpy as np# 從 .npy 文件讀取數組
array_from_npy = np.load('array.npy')
print("從 .npy 文件讀取的數組:")
print(array_from_npy)# 從 .npz 文件讀取數組
data = np.load('data.npz')
array1 = data['array1']
array2 = data['array2']
print("從 .npz 文件讀取的數組1:")
print(array1)
print("從 .npz 文件讀取的數組2:")
print(array2)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 從 .npy 文件讀取數組
# np.load 是 NumPy 中用于從文件加載數組的函數
# 傳入文件路徑作為參數
array_from_npy = np.load('array.npy')
print("從 .npy 文件讀取的數組:") # 打印從 .npy 文件讀取的數組
print(array_from_npy)# 從 .npz 文件讀取數組
# .npz 文件可以存儲多個數組
# 使用 np.load 讀取 .npz 文件
data = np.load('data.npz')
# 通過鍵值訪問存儲在 .npz 文件中的數組
array1 = data['array1']
array2 = data['array2']
print("從 .npz 文件讀取的數組1:") # 打印數組1
print(array1)
print("從 .npz 文件讀取的數組2:") # 打印數組2
print(array2)
3. 隨機生成數組
import numpy as np# 生成一個 3x3 的隨機數組,元素值在 0 到 1 之間
random_array = np.random.rand(3, 3)
print("隨機生成的 3x3 數組:")
print(random_array)# 生成一個 3x3 的隨機整數數組,元素值在 1 到 10 之間
random_int_array = np.random.randint(1, 10, (3, 3))
print("隨機生成的 3x3 整數數組:")
print(random_int_array)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 生成一個 3x3 的隨機數組,元素值在 0 到 1 之間
# np.random.rand 是 NumPy 中用于生成隨機數組的函數
# 傳入數組的形狀作為參數
random_array = np.random.rand(3, 3)
print("隨機生成的 3x3 數組:") # 打印隨機數組
print(random_array)# 生成一個 3x3 的隨機整數數組,元素值在 1 到 10 之間
# np.random.randint 是 NumPy 中用于生成隨機整數數組的函數
# 傳入最小值、最大值和數組形狀作為參數
random_int_array = np.random.randint(1, 10, (3, 3))
print("隨機生成的 3x3 整數數組:") # 打印隨機整數數組
print(random_int_array)
1.4.2 基礎運算
NumPy 提供了豐富的數組運算功能,包括加法、減法、乘法、除法、矩陣乘法等。下面我們將介紹一些常見的基礎運算。
1. 數組加法
import numpy as np# 創建兩個 3x3 的數組
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 計算兩個數組的加法
sum_array = array1 + array2
print("數組加法:")
print(sum_array)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 創建兩個 3x3 的數組
# np.array 是 NumPy 中用于創建數組的函數
# 傳入二維列表,每個子列表代表數組的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 計算兩個數組的加法
# NumPy 支持直接使用 + 運算符進行數組加法
sum_array = array1 + array2
print("數組加法:") # 打印結果
print(sum_array)
2. 數組減法
import numpy as np# 創建兩個 3x3 的數組
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 計算兩個數組的減法
diff_array = array1 - array2
print("數組減法:")
print(diff_array)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 創建兩個 3x3 的數組
# np.array 是 NumPy 中用于創建數組的函數
# 傳入二維列表,每個子列表代表數組的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 計算兩個數組的減法
# NumPy 支持直接使用 - 運算符進行數組減法
diff_array = array1 - array2
print("數組減法:") # 打印結果
print(diff_array)
3. 數組乘法
import numpy as np# 創建兩個 3x3 的數組
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 計算兩個數組的逐元素乘法
elementwise_product = array1 * array2
print("逐元素乘法:")
print(elementwise_product)# 計算兩個數組的矩陣乘法
matrix_product = np.dot(array1, array2)
print("矩陣乘法:")
print(matrix_product)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 創建兩個 3x3 的數組
# np.array 是 NumPy 中用于創建數組的函數
# 傳入二維列表,每個子列表代表數組的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 計算兩個數組的逐元素乘法
# NumPy 支持直接使用 * 運算符進行數組的逐元素乘法
elementwise_product = array1 * array2
print("逐元素乘法:") # 打印結果
print(elementwise_product)# 計算兩個數組的矩陣乘法
# np.dot 是 NumPy 中用于計算矩陣乘法的函數
# 傳入兩個數組作為參數
matrix_product = np.dot(array1, array2)
print("矩陣乘法:") # 打印結果
print(matrix_product)
4. 數組除法
import numpy as np# 創建兩個 3x3 的數組
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 計算兩個數組的逐元素除法
elementwise_division = array1 / array2
print("逐元素除法:")
print(elementwise_division)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 創建兩個 3x3 的數組
# np.array 是 NumPy 中用于創建數組的函數
# 傳入二維列表,每個子列表代表數組的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 計算兩個數組的逐元素除法
# NumPy 支持直接使用 / 運算符進行數組的逐元素除法
elementwise_division = array1 / array2
print("逐元素除法:") # 打印結果
print(elementwise_division)
5. 數組轉置
import numpy as np# 創建一個 3x3 的數組
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 計算數組的轉置
transposed_array = array.T
print("數組轉置:")
print(transposed_array)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 創建一個 3x3 的數組
# np.array 是 NumPy 中用于創建數組的函數
# 傳入二維列表,每個子列表代表數組的一行
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 計算數組的轉置
# .T 是 NumPy 數組的一個屬性,用于獲取數組的轉置
transposed_array = array.T
print("數組轉置:") # 打印結果
print(transposed_array)
6. 數組重塑
import numpy as np# 創建一個 1x9 的數組
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])# 將數組重塑為 3x3 的數組
reshaped_array = array.reshape(3, 3)
print("重塑后的數組:")
print(reshaped_array)
注釋:
# 導入 NumPy 庫,并將其別名為 np
import numpy as np# 創建一個 1x9 的數組
# np.array 是 NumPy 中用于創建數組的函數
# 傳入一個一維列表
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])# 將數組重塑為 3x3 的數組
# .reshape 是 NumPy 數組的一個方法,用于改變數組的形狀
# 傳入新的形狀作為參數
reshaped_array = array.reshape(3, 3)
print("重塑后的數組:") # 打印結果
print(reshaped_array)
參考文獻或資料
參考資料名稱 | 鏈接 |
---|---|
NumPy 官方文檔 | https://numpy.org/doc/ |
Anaconda 官方文檔 | https://docs.anaconda.com/ |
Pip 官方文檔 | https://pip.pypa.io/en/stable/ |
Python 官方文檔 | https://docs.python.org/3/ |
NumPy 教程 | https://www.datacamp.com/community/tutorials/python-numpy-tutorial |
NumPy 入門指南 | https://numpy.org/devdocs/user/quickstart.html |
NumPy 環境搭建教程 | https://www.geeksforgeeks.org/how-to-install-numpy-on-windows/ |
NumPy 學習筆記 | https://www.jianshu.com/p/4e4d5c1e7e8b |
NumPy 初學者教程 | https://github.com/rougier/numpy-100 |
NumPy 常見問題解答 | https://numpy.org/doc/stable/user/troubleshooting.html |
NumPy 源碼分析 | https://github.com/numpy/numpy |
NumPy 速查表 | https://www.kaggle.com/learn/overview |
NumPy 實戰案例 | https://www.tensorflow.org/tutorials/quickstart/beginner |
NumPy 書籍推薦 | https://www.springer.com/gp/book/9781484242452 |
NumPy 視頻教程 | https://www.youtube.com/watch?v=QUT1VHiLmmI |
NumPy 交互式學習 | https://colab.research.google.com/ |
希望這篇文章能幫助你成功地搭建 NumPy 環境并進行初體驗。這篇文章包含了詳細的原理介紹、代碼示例、源碼注釋以及案例等。希望這對您有幫助。如果有任何問題請隨私信或評論告訴我。