📂 目录

  • 广播的基本概念
  • 广播规则
  • 广播示例
  • 广播与性能
  • 出站链接
  • 参考资料

🎯 广播的基本概念

广播(Broadcasting)是 NumPy 中用于执行不同形状数组之间运算的一种机制。通过广播,NumPy 可以使得不同形状的数组之间进行元素级运算,而不需要显式地对数组进行扩展或调整形状。

广播规则会自动地将一个数组“扩展”为另一个数组的形状,从而实现对每个元素的操作。这种机制大大提高了运算效率,避免了大量的内存复制。


📏 广播规则

NumPy 的广播遵循以下规则:

  1. 如果数组的维度不同,NumPy 会通过在前面补充 1 使得两个数组的维度一致
  2. 两个数组的维度在某一轴上是相同的,或者其中一个数组在该轴上的维度为 1,则可以进行广播。
  3. 如果两个数组的形状在某一轴上都不同,且该轴的维度都不为 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