Skip to content

ndarray簡介

在 NumPy 中,ndarray(N-dimensional array) 是一種高效能的多維陣列,可用來處理向量、矩陣、數據運算


✅ 1. 建立 ndarray

🔹 使用 np.array() 建立陣列

範例

import numpy as np

# 建立一維陣列
arr1 = np.array([1, 2, 3, 4])
print(arr1)  # [1 2 3 4]

輸出

[1 2 3 4]

範例

# 建立二維陣列(矩陣)
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)

輸出

[[1 2 3]
 [4 5 6]]

✅ 2. ndarray 重要屬性

屬性 說明 範例
.shape 陣列的形狀 (行, 列) arr.shape
.dtype 陣列元素的資料型別 arr.dtype
.ndim 陣列的維度數 arr.ndim
.size 陣列中的元素總數 arr.size
print(arr2.shape)  # (2, 3) → 2 行 3 列
print(arr2.dtype)  # int64(視系統而定)
print(arr2.ndim)   # 2
print(arr2.size)   # 6

✅ 3. 快速建立特殊陣列

NumPy 提供許多方法來快速建立陣列

np.zeros((2, 3))    # 建立 2x3 全為 0 的陣列
np.ones((3, 3))     # 建立 3x3 全為 1 的陣列
np.full((2, 2), 7)  # 建立 2x2 全為 7 的陣列
np.eye(3)           # 建立 3x3 單位矩陣 (對角線為 1)
np.arange(1, 10, 2) # [1 3 5 7 9],類似 range()
np.linspace(0, 1, 5) # 均分 5 個數值

✅ 4. 陣列運算

NumPy 支援向量化運算,能夠比 Python 內建 list 更快:

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

# 數學運算(每個元素計算)
print(arr + 10)  # [11 12 13 14]
print(arr * 2)   # [2 4 6 8]
print(arr ** 2)  # [ 1  4  9 16]

# 陣列之間運算
arr2 = np.array([10, 20, 30, 40])
print(arr + arr2)  # [11 22 33 44]

✅ 5. 陣列索引與切片

NumPy 陣列支援 Python 的索引與切片:

arr = np.array([[10, 20, 30], [40, 50, 60]])

print(arr[0, 1])  # 取得第一行第二個元素 → 20
print(arr[:, 1])  # 取得所有行的第二個元素 → [20 50]
print(arr[1, :])  # 取得第二行的所有元素 → [40 50 60]
print(arr[0, 1:]) # 取得第一行的 20 之後的元素 → [20 30]

✅ 6. 陣列變形與合併

🔹 陣列變形 (reshape)

arr = np.array([1, 2, 3, 4, 5, 6])
arr2d = arr.reshape(2, 3)  # 變為 2x3 矩陣
print(arr2d)

🔹 輸出

[[1 2 3]
 [4 5 6]]

🔹 陣列合併

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])

print(np.vstack([a, b]))  # 垂直合併(新增一行)
print(np.hstack([a, b.T]))  # 水平合併(新增一列)

📌 總結

操作 方式
建立陣列 np.array([...])
查看屬性 .shape, .dtype, .ndim, .size
特殊陣列 np.zeros(), np.ones(), np.arange(), np.linspace()
數學運算 +, -, *, /, **
索引 & 切片 arr[i, j], arr[:, j], arr[i, :]
變形 & 合併 .reshape(), np.vstack(), np.hstack()

🚀 ndarray 是 NumPy 最核心的數據結構,理解它能讓你更高效地處理數據! 😊