NumPy 是 Python 中用于科學計算的基礎庫之一,它提供了高性能的多維數組對象以及這些數組的操作。NumPy 的核心數據結構是 ndarray
(N-dimensional array,N維數組),它提供了一種高效的存儲和操作大型多維數組的方法。以下是幾種 NumPy 數組(array)的常見使用方式:
1. 創建數組
-
使用
numpy.array()
:從已有的 Python 列表(或任何類似數組的對象)創建數組。import numpy as np arr = np.array([1, 2, 3, 4, 5])
-
使用
numpy.zeros()
,numpy.ones()
,numpy.empty()
:創建具有指定形狀和類型的新數組,分別初始化為全零、全一或未初始化的隨機值。zeros = np.zeros((2, 3)) # 創建一個2x3的零數組 ones = np.ones((2, 3)) # 創建一個2x3的一數組 empty = np.empty((2, 3)) # 創建一個2x3的未初始化數組
-
使用
numpy.arange()
,numpy.linspace()
:創建等差數列或等間距數列。arange = np.arange(0, 10, 2) # 從0到10(不包括10),步長為2的數組 linspace = np.linspace(0, 10, 5) # 從0到10,生成5個等間距的數
2. 數組的基本操作
-
索引和切片:NumPy 數組支持 Python 的索引和切片操作。
arr = np.array([1, 2, 3, 4, 5]) print(arr[2]) # 輸出 3 print(arr[1:4]) # 輸出 [2 3 4]
-
廣播(Broadcasting):NumPy 允許數組之間進行逐元素操作,即使它們的形狀不完全相同,這通過廣播機制實現。
a = np.array([[1, 2], [3, 4]]) b = np.array([10, 20]) print(a + b) # 廣播機制使得 b 被擴展為 [[10, 20], [10, 20]],然后執行逐元素加法
-
數組重塑(Reshaping):改變數組的形狀而不改變其數據。
arr = np.array([1, 2, 3, 4, 5, 6]) reshaped_arr = arr.reshape((2, 3)) # 創建一個2x3的數組
3. 數組的數學和統計函數
NumPy 提供了大量的數學函數,用于數組上的元素級操作,如 np.sin()
, np.cos()
, np.exp()
等。此外,還有統計函數如 np.mean()
, np.std()
, np.sum()
等,用于計算數組的統計量。
arr = np.array([1, 2, 3, 4, 5])
print(np.mean(arr)) # 輸出平均值
print(np.std(arr)) # 輸出標準差
4. 數組的組合
-
水平堆疊(
np.hstack()
)和垂直堆疊(np.vstack()
):將多個數組沿指定的軸堆疊起來。a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) print(np.hstack((a, b))) # [1 2 3 4 5 6] print(np.vstack((a, b))) # [[1 2 3]# [4 5 6]]
-
列堆疊(
np.column_stack()
)和行堆疊(np.row_stack()
):與hstack
和vstack
類似,但主要用于二維數組。