← 返回 Day 79 正文

Day 79 · 练习与清单

Day 079 — NumPy 基础:完成清单与练习题


✅ 今日完成清单


📝 练习题

基础题

练习 1:数组创建与属性

创建一个 5x5 的数组,值为 1 到 25。然后: 1. 打印其 shape、ndim、size、dtype 2. 计算所有元素的总和 3. 计算每一行的均值 4. 计算每一列的标准差

python
import numpy as np

# 你的代码

练习 2:索引与切片

给定数组:

python
arr = np.array([[10, 20, 30, 40, 50],
                [60, 70, 80, 90, 100],
                [110, 120, 130, 140, 150]])

提取: 1. 第 2 行所有元素 2. 第 1 列所有元素 3. 右上角 2x2 子矩阵 4. 所有大于 100 的元素


练习 3:布尔索引

给定数组:

python
scores = np.array([85, 92, 78, 95, 88, 60, 73, 89, 91, 82])
  1. 找出所有大于 90 分的成绩
  2. 计算大于 80 分的学生比例
  3. 将所有不及格(<60)的成绩替换为 60

进阶题

练习 4:数据标准化

实现一个函数,将一维数组标准化为均值为 0、标准差为 1 的分布:

标准化公式: (x - mean) / std
python
def standardize(arr):
    # 你的代码
    pass

data = np.array([10, 20, 30, 40, 50])
result = standardize(data)
print(result)  # 应该均值约 0,标准差约 1

练习 5:矩阵应用

A 班 30 人,B 班 25 人,两班 5 门课的成绩如下:

python
# A班成绩 (30人 x 5门课)
np.random.seed(10)
A_grades = np.random.randint(60, 100, (30, 5))

# B班成绩 (25人 x 5门课)
B_grades = np.random.randint(60, 100, (25, 5))

请回答: 1. 每个班每门课的平均分 2. 哪个班的总体平均分更高? 3. 哪门课两个班的差异最大?(计算差值的标准差) 4. 找出 A 班每门课的最高分学生编号


练习 6:性能对比

比较以下三种方式计算平方和的性能:

python
import numpy as np
import time

n = 1_000_000
arr = np.arange(n)

# 方式A: 纯 Python 循环
# 方式B: 列表推导式
# 方式C: NumPy 向量化

# 测量并比较三种方式的耗时

💡 提示


完成练习后,回顾 README.md 中的概念,确保理解每个知识点。