Leon Yi

19 避免 NumPy 中的“秩1数组”(Rank-1 Array)陷阱

1. 问题背景:NumPy 的灵活性是一把双刃剑 优点:Python + NumPy 提供了强大的广播机制(broadcasting),使得代码简洁、表达力强。 缺点:过度灵活可能导致隐蔽的 bug,尤其在向量维度处理上容易出错。 例如:将列向量与行向量相加,本应报错,但 NumPy 会自动广播并返回一个矩阵,而非报错。 2. 关键问题:什么是“秩1数组”(Ra...

18 Python 中的广播机制(Broadcasting in Python)

一、广播机制的作用   广播(Broadcasting)是 NumPy 中一种强大的机制,它允许对不同形状的数组进行算术运算,而无需显式地编写 for 循环。这不仅能显著提升代码运行速度,还能使代码更加简洁、易读。 ✅ 核心优势: 避免显式循环 提高计算效率(向量化) 减少代码行数 二、实际应用示例:计算食物热量百分比 1. 问题设定...

16 向量化逻辑回归(Vectorizing Logistic Regression)

🎯 核心目标   在不使用任何显式 for 循环的前提下,一次性对整个训练集(共 $M$ 个样本)进行前向传播(forward propagation)和激活值计算,从而大幅提升计算效率。这是深度学习中向量化(vectorization)的核心思想。 1️⃣ 传统方法 vs 向量化方法 ❌ 传统方法(低效)   对于每个训练样本 $x^{(i)} \in \mathbb{R}^{...

15 更多向量化示例(More Vectorization Examples)

一、核心思想:避免显式 for 循环 黄金法则(Rule of Thumb) : 在编写神经网络或回归模型时,尽可能避免使用显式的 for 循环。 虽然有时无法完全消除循环,但只要能用 NumPy 等库的内置向量化函数替代,代码速度通常会显著提升。   原因: Python 的 for 循环在解释执行下效率低; NumPy 底层由 C/C++ 实现,支持 SIMD(单...