在 Python 的數據處理與科學計算領域,NumPy 是一個不可或缺的基礎工具。它的強大在於提供了高效的多維陣列操作,並支援向量化運算,極大地提升了程式執行效率。本篇文章將詳細介紹 NumPy 的基本概念、功能以及實踐應用,幫助你快速上手這個重要的工具。
NumPy(Numerical Python)是一個 Python 的開源函式庫,主要功能包括:
要使用 NumPy,首先需要安裝並匯入該函式庫:
pip install numpy
在程式碼中匯入:
import numpy as np
NumPy 的核心是 ndarray
,它是一種多維數組。以下是建立陣列的幾種方式:
import numpy as np
# 從列表建立一維陣列
arr1 = np.array([1, 2, 3, 4])
print("一維陣列:", arr1)
# 從嵌套列表建立二維陣列
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二維陣列:\n", arr2)
NumPy 提供多種方便的數據生成函數:
# 生成全 0 陣列
zeros = np.zeros((2, 3))
print("全 0 陣列:\n", zeros)
# 生成全 1 陣列
ones = np.ones((3, 4))
print("全 1 陣列:\n", ones)
# 生成隨機數陣列
random_arr = np.random.random((3, 3))
print("隨機數陣列:\n", random_arr)
# 生成範圍數字
range_arr = np.arange(0, 10, 2) # 從 0 到 10,每次遞增 2
print("範圍陣列:", range_arr)
# 生成線性區間
linspace_arr = np.linspace(0, 1, 5) # 從 0 到 1 均勻分成 5 個數字
print("線性區間陣列:", linspace_arr)
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("陣列形狀 (shape):", arr.shape) # (2, 3)
print("元素個數 (size):", arr.size) # 6
print("資料型別 (dtype):", arr.dtype) # int32 或 int64
# 重塑陣列
reshaped = arr.reshape((3, 2)) # 改為 3 行 2 列
print("重塑後陣列:\n", reshaped)
# 陣列轉置
transposed = arr.T
print("轉置後陣列:\n", transposed)
NumPy 支援多種高效運算,包括數學運算、邏輯操作以及矩陣操作。
arr = np.array([1, 2, 3, 4])
print("加法:", arr + 2)
print("乘法:", arr * 3)
print("平方:", arr ** 2)
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
# 矩陣相乘
C = np.dot(A, B)
print("矩陣相乘:\n", C)
# 矩陣行列式
det = np.linalg.det(A)
print("矩陣行列式:", det)
NumPy 提供強大的索引與切片功能,讓你可以輕鬆操作多維數據。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 單個元素
print("第一行第二列元素:", arr[0, 1]) # 2
# 行列切片
print("第一行:", arr[0, :]) # [1, 2, 3]
print("第二列:", arr[:, 1]) # [2, 5, 8]
arr = np.array([1, 2, 3, 4, 5, 6])
# 篩選出大於 3 的元素
filtered = arr[arr > 3]
print("篩選結果:", filtered) # [4, 5, 6]
data = np.random.random(100) # 生成 100 個隨機數
mean = np.mean(data)
std_dev = np.std(data)
print(f"平均值:{mean:.2f}, 標準差:{std_dev:.2f}")
data = np.random.randint(0, 100, 10) # 生成 10 個 0 到 100 的隨機整數
sorted_data = np.sort(data)
print("原始數據:", data)
print("排序後數據:", sorted_data)
NumPy 常用於處理圖像數據,例如灰階圖像可以表示為 2D 陣列:
import numpy as np
import matplotlib.pyplot as plt
# 模擬一個 5x5 的灰階圖像
image = np.random.random((5, 5))
plt.imshow(image, cmap="gray")
plt.title("image")
plt.colorbar()
plt.show()
NumPy 是 Python 科學計算的基石,其高效的陣列操作和豐富的數學函數讓你能輕鬆處理各類數據。本篇文章涵蓋了 NumPy 的基本功能及其應用,希望能幫助你快速入門並學會活用這個強大的工具。在學習的過程中,嘗試將 NumPy 的功能應用到實際項目中,進一步鞏固你的知識。