📂 目录
- 广播的基本概念
- 广播规则
- 广播示例
- 广播与性能
- 出站链接
- 参考资料
🎯 广播的基本概念
广播(Broadcasting)是 NumPy 中用于执行不同形状数组之间运算的一种机制。通过广播,NumPy 可以使得不同形状的数组之间进行元素级运算,而不需要显式地对数组进行扩展或调整形状。
广播规则会自动地将一个数组“扩展”为另一个数组的形状,从而实现对每个元素的操作。这种机制大大提高了运算效率,避免了大量的内存复制。
📏 广播规则
NumPy 的广播遵循以下规则:
- 如果数组的维度不同,NumPy 会通过在前面补充 1 使得两个数组的维度一致。
- 两个数组的维度在某一轴上是相同的,或者其中一个数组在该轴上的维度为 1,则可以进行广播。
- 如果两个数组的形状在某一轴上都不同,且该轴的维度都不为 1,则广播失败。
🧑🏫 广播示例
1. 数组与标量之间的广播
将标量与数组进行加法运算时,标量会被广播到数组的每个元素:
import numpy as np
a = np.array([1, 2, 3])
b = 10
print(a + b) # 输出:[11 12 13]
在这个例子中,标量 b
会被广播到与数组 a
相同的形状,结果是将 10 加到数组的每个元素。
2. 两个数组之间的广播
对于两个不同形状的数组,如果它们满足广播规则,就能进行运算:
a = np.array([[1, 2], [3, 4]]) # 形状 (2, 2)
b = np.array([10, 20]) # 形状 (2,)
print(a + b) # 输出:[[11 22] [13 24]]
在这个例子中,b
会被广播到形状 (2, 2)
,与 a
相加。
⚡ 广播与性能
广播机制不仅让代码更加简洁,还能够提高性能。通过减少不必要的内存复制,广播能够加速运算,尤其是在处理大型数据集时。由于 NumPy 内部使用 C 语言实现大多数操作,广播机制使得数组之间的运算在 C 层面上进行,从而避免了 Python 层面的循环操作。
🔗 出站链接
📚 参考资料
- NumPy 官方文档
- W3Schools Python NumPy 教程
- GeeksForGeeks 深度讲解
- 来自:www.52kanjuqing.com
发表回复