Day 2 numpy创建数组、索引、广播
建议用 Jupyter Notebook 边敲边记。启动方式:bash输入
conda activate ai_env
jupyter notebook然后在浏览器里新建一个 Python 3 笔记本,把今天的所有代码按章节写在一个 .ipynb 文件里,方便复习。
1️⃣ 热身:导入 NumPy 并检查版本(5 分钟)
在第一个 cell 里输入:
import numpy as np
print(np.__version__)运行(Shift+Enter),看到版本号(如 2.4.3)即可。
2️⃣ 创建数组(40 分钟)
掌握以下 8 种创建方式,每种手打一遍并观察输出。
# 1. 从列表创建
a = np.array([1, 2, 3])
print("1D array:", a)
# 2. 二维数组
b = np.array([[1,2,3], [4,5,6]])
print("2D array:\n", b)
# 3. 全零矩阵
zeros = np.zeros((3, 4))
print("zeros:\n", zeros)
# 4. 全一矩阵
ones = np.ones((2, 3))
print("ones:\n", ones)
# 5. 单位矩阵
eye = np.eye(4) # 4x4 对角线上为1
print("eye:\n", eye)
# 6. 等间隔数组(类似 range)
ar = np.arange(0, 10, 2) # 起始0,终止10(不含),步长2
print("arange:", ar)
# 7. 线性间隔(等分)
lin = np.linspace(0, 1, 5) # 0到1之间均匀取5个点
print("linspace:", lin)
# 8. 随机数
rand = np.random.rand(3, 3) # 0~1均匀分布
randn = np.random.randn(3, 3) # 标准正态分布
print("random uniform:\n", rand)
print("random normal:\n", randn)3️⃣ 数组索引与切片(50 分钟)
基本索引(类似 Python 列表)
arr = np.arange(10)
print(arr[0]) # 第一个元素
print(arr[-1]) # 最后一个
print(arr[2:5]) # 索引 2,3,4二维索引
mat = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(mat[0, 1]) # 第0行第1列 → 2
print(mat[1]) # 第1行 → [4,5,6]
print(mat[:, 0]) # 所有行的第0列 → [1,4,7]
print(mat[0:2, 1:3]) # 0~1行,1~2列 → [[2,3],[5,6]]花式索引(整数数组索引)
arr = np.array([10, 20, 30, 40, 50])
idx = [0, 2, 4]
print(arr[idx]) # [10 30 50]
# 二维花式索引
mat = np.arange(12).reshape(3, 4)
rows = [0, 2]
cols = [1, 3]
print(mat[rows, cols]) # 取 (0,1) 和 (2,3) 两个元素
布尔索引(非常重要)
arr = np.array([1, 5, 2, 8, 3])
mask = arr > 3
print(mask) # [False True False True False]
print(arr[mask]) # [5 8] 选出所有大于3的元素
# 实际应用:替换
arr[arr > 3] = 99
print(arr) # [1 99 2 99 3]练习
randomMat = np.random.rand(5, 5) # 创建一个随机的 5 * 5矩阵
print("原始矩阵:\n", randomMat)
randomMat[randomMat > 0.5] = 0 # # 将所有大于 0.5 的元素替换为 0
print(randomMat)
print("是否还有大于0.5的元素?", np.any(randomMat > 0.5))
# 原始矩阵:
[[0.24105789 0.86278547 0.61101981 0.63600007 0.51729033]
[0.51432014 0.53458585 0.13090915 0.89073187 0.4918729 ]
[0.88033846 0.14628945 0.92441329 0.21437359 0.14920108]
[0.80158892 0.41307432 0.09961127 0.22901789 0.98483656]
[0.6531539 0.62407493 0.3365452 0.80032319 0.93666646]]
[[0.24105789 0. 0. 0. 0. ]
[0. 0. 0.13090915 0. 0.4918729 ]
[0. 0.14628945 0. 0.21437359 0.14920108]
[0. 0.41307432 0.09961127 0.22901789 0. ]
[0. 0. 0.3365452 0. 0. ]]
是否还有大于0.5的元素? False 
Comments | NOTHING