多維陣列的統計運算
NumPy 的 `ndarray` 提供許多統計函式,可分為描述統計、聚合統計,以及索引位置查找。以下以簡單範例說明。
## 1. 基本描述統計
用來了解資料的集中趨勢與分散程度,例如平均數、中位數、標準差。
```python
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(np.mean(a)) # 平均數:3.0
print(np.median(a)) # 中位數:3.0
print(np.std(a)) # 標準差:約 1.414
```
常用函式包括:
- `np.mean()`:平均數
- `np.median()`:中位數
- `np.std()`:標準差
- `np.var()`:變異數
---
## 2. 聚合統計
聚合統計會將多個元素彙整成一個或較少的結果,例如總和、最小值、最大值。也可以透過 `axis` 指定計算方向。
```python
b = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(np.sum(b)) # 所有元素總和:21
print(np.sum(b, axis=0)) # 依欄加總:[5 7 9]
print(np.sum(b, axis=1)) # 依列加總:[6 15]
```
其他常用聚合函式包括:
- `np.min()`、`np.max()`:最小值、最大值
- `np.argmin()`、`np.argmax()`:最小值、最大值的位置
- `np.prod()`:所有元素乘積
- `np.cumsum()`:累積總和
---
## 3. 索引位置的查找
可使用 `argmin()`、`argmax()` 查找最小值或最大值的索引,也可用 `where()` 找出符合條件的位置。
```python
c = np.array([
[3, 8],
[2, 5]
])
flat_index = np.argmax(c)
position = np.unravel_index(flat_index, c.shape)
print(position) # (0, 1),表示最大值 8 位於第 0 列、第 1 欄
print(np.where(c > 4))
# (array([0, 1]), array([1, 1]))
```
其中:
- `np.argmax()`:找最大值的索引
- `np.argmin()`:找最小值的索引
- `np.where(條件)`:找出符合條件的元素位置
- `np.unravel_index()`:將扁平索引轉換成多維索引
`axis=0` 通常代表沿著列方向計算、逐欄聚合;`axis=1` 則代表逐列聚合。
相關學習地圖、教學課程
Python 資料工程