在數據分析和數值計算中,NumPy是Python中最核心的工具之一。它提供了高效的多維數組對象,以及大量用於數組操作和統計分析的函數。今天我們就來聚焦Numpy中三個最常用的統計函數:mean(平均值)、sum(求和)和max(最大值),幫助你快速上手數據統計分析。

一、快速導入Numpy並創建數組

首先,我們需要導入NumPy庫,並創建一些示例數組來演示函數用法。通常我們用np作爲NumPy的別名:

import numpy as np

接下來,創建簡單的數組:
- 一維數組:[1, 2, 3, 4, 5]
- 二維數組(2行3列):[[1, 2, 3], [4, 5, 6]]

# 一維數組示例
arr_1d = np.array([1, 2, 3, 4, 5])

# 二維數組示例
arr_2d = np.array([[1, 2, 3], 
                  [4, 5, 6]])

二、mean函數:計算算術平均值

作用mean函數用於計算數組中所有元素的算術平均值。

基本用法

  • 對一維數組,直接計算整體平均值;
  • 對多維數組,可通過axis參數指定計算方向(行或列)。

關鍵參數axis

  • axis=0:按計算(垂直方向,即每列元素的平均值);
  • axis=1:按計算(水平方向,即每行元素的平均值);
  • 若不指定axis,則計算整個數組所有元素的平均值。

示例

# 1. 一維數組平均值
print("一維數組:", arr_1d)
print("整體平均值:", np.mean(arr_1d))  # 結果:3.0

# 2. 二維數組平均值
print("\n二維數組:\n", arr_2d)
print("按列平均值(axis=0):", np.mean(arr_2d, axis=0))  # [2.5, 3.5, 4.5]
print("按行平均值(axis=1):", np.mean(arr_2d, axis=1))  # [2.0, 5.0]

三、sum函數:計算元素總和

作用sum函數用於計算數組中所有元素的總和。

基本用法

mean類似,通過axis參數指定按行或按列求和。

關鍵參數axis

  • axis=0:每一列元素的和;
  • axis=1:每一行元素的和。

示例

# 1. 一維數組求和
print("一維數組:", arr_1d)
print("總和:", np.sum(arr_1d))  # 結果:15

# 2. 二維數組求和
print("\n二維數組:\n", arr_2d)
print("按列求和(axis=0):", np.sum(arr_2d, axis=0))  # [5, 7, 9]
print("按行求和(axis=1):", np.sum(arr_2d, axis=1))  # [6, 15]

四、max函數:查找最大值

作用max函數用於找出數組中元素的最大值。

基本用法

與前兩個函數一致,通過axis參數指定按行或按列查找最大值。

關鍵參數axis

  • axis=0:每一列的最大值;
  • axis=1:每一行的最大值。

示例

# 1. 一維數組最大值
print("一維數組:", arr_1d)
print("最大值:", np.max(arr_1d))  # 結果:5

# 2. 二維數組最大值
print("\n二維數組:\n", arr_2d)
print("按列最大值(axis=0):", np.max(arr_2d, axis=0))  # [4, 5, 6]
print("按行最大值(axis=1):", np.max(arr_2d, axis=1))  # [3, 6]

五、實戰示例:學生成績統計

假設我們有一個班級的成績數據(3名學生,3門課),用數組表示如下:

# 學生成績數組:每行代表一名學生,每列代表一門課
scores = np.array([
    [85, 90, 78],   # 學生1:語文85,數學90,英語78
    [92, 88, 95],   # 學生2:語文92,數學88,英語95
    [76, 80, 82]    # 學生3:語文76,數學80,英語82
])

現在我們用meansummax分析成績:

# 1. 每門課平均分(列平均值)
print("每門課平均分(列平均):", np.mean(scores, axis=0))  
# 結果:[84.333..., 86.0, 85.0]

# 2. 每個學生的總分(行總和)
print("每個學生總分(行和):", np.sum(scores, axis=1))  
# 結果:[253, 275, 238]

# 3. 每個學生的最高分(行最大值)
print("每個學生最高分(行最大):", np.max(scores, axis=1))  
# 結果:[90, 95, 82]

# 4. 每門課最高分(列最大值)
print("每門課最高分(列最大):", np.max(scores, axis=0))  
# 結果:[92, 90, 95]

六、總結

Numpy的meansummax函數是統計分析的基礎工具,核心是通過axis參數控制計算方向(行/列)。記住:
- axis=0列方向(垂直方向,對應行索引變化);
- axis=1行方向(水平方向,對應列索引變化)。

通過多練習不同維度的數組操作,你就能快速掌握這些函數的用法,爲後續更復雜的數據分析打下基礎!

小夜