NumPy 广播(Broadcast)
NumPy 广播(Broadcast)
引言
NumPy 是 Python 中最常用的科学计算库之一,它提供了强大的多维数组对象以及一系列用于数组计算的函数。在 NumPy 中,广播(Broadcast)是一个非常重要的概念,它允许用户在不进行显式循环的情况下,对数组进行高效的元素级操作。本文将深入探讨 NumPy 的广播机制,帮助读者更好地理解和运用这一特性。
什么是广播?
广播是 NumPy 中的一种操作,它允许两个数组在形状不完全匹配的情况下进行运算。在广播规则下,数组在运算前会自动扩展其形状,以适应操作的需要。这种机制使得数组操作更加灵活和高效。
广播规则
以下是一些基本的广播规则:
- 数组的秩必须相同:参与广播的数组必须具有相同的秩(即维度数量)。
- 形状较小的数组自动扩展:如果一个数组的形状小于另一个数组,那么它会在相应的维度上自动扩展到与另一个数组相同的尺寸。
- 扩展维度的大小必须相等:如果一个数组的某个维度比另一个数组大,那么它在该维度上的大小必须等于另一个数组相同维度的大小。
- 扩展维度的大小可以为 1:如果一个维度的大小为 1,那么它可以在该维度上与任何大小的维度进行广播。
广播示例
以下是一些广播的示例,以帮助读者更好地理解这一概念:
1. 维度扩展
import numpy as npa = np.array([1, 2, 3])
b = np.array([[1], [2], [3]])
print(a.shape) # 输出: (3,)
print(b.shape) # 输出: (3, 1)# 在第二个维度上进行广播
result = a * b
print(result.shape) # 输出: (3, 1)
print(result) # 输