NumPy - 数组加法



NumPy 数组加法

NumPy 数组加法允许您在数组之间执行元素级加法。此操作将来自两个相同形状的数组的对应元素相加,生成一个具有相同形状的新数组,其中包含求和后的值。

如果数组具有不同的形状,则 NumPy 可以根据某些条件将较小的数组广播以匹配较大数组的形状。

NumPy 中的元素级加法

元素级加法是 NumPy 中数组加法的最基本形式,其中两个数组的对应元素相加以生成一个新数组。

此类型的加法作用于相同形状的数组,对来自两个数组的每一对元素分别执行加法运算。

示例

在以下示例中,我们将数组a的每个元素都加到数组b的对应元素上 -

import numpy as np

# Creating two arrays
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# Performing element-wise addition
result = a + b
print(result)

以下是获得的输出 -

[5 7 9]

将标量添加到 NumPy 数组

当将标量(单个值)添加到数组时,标量将被广播以匹配数组的形状。这意味着标量实际上被视为一个与原始数组形状相同的数组,所有元素都等于标量值。

广播描述了 NumPy 在算术运算期间如何处理不同形状的数组。当运算涉及不同形状的数组时,NumPy 会根据特定的广播规则自动调整它们的形状以使其匹配。

示例

在此示例中,我们将标量“10”添加到数组“a”的每个元素中 -

import numpy as np

# Creating an array
a = np.array([1, 2, 3])

# Adding a scalar
result = a + 10
print(result)

这将产生以下结果 -

[11 12 13]

添加不同形状的 NumPy 数组

NumPy 中的广播允许通过调整它们的维度以使其相互匹配来添加不同形状的数组。

NumPy 通过从最右侧的维度开始比较维度并向后工作来对数组进行广播对齐。如果两个维度相等或其中一个为 1,则认为它们是兼容的,在这种情况下,它将被广播以匹配另一个维度。

当维度不直接匹配时,NumPy 会根据需要沿不匹配的维度拉伸较小的数组以匹配较大数组的形状。

示例

在下面的示例中,数组“b”被广播以匹配数组“a”的形状,然后执行元素级加法 -

import numpy as np

# Creating arrays with different shapes
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([10, 20, 30])

# Adding arrays with broadcasting
result = a + b
print(result)

以下是上述代码的输出 -

[[11 22 33]
 [14 25 36]]

使用广播添加多维数组

在 NumPy 中,广播允许通过自动扩展较小数组的维度以匹配较大数组的形状来对不同形状的多维数组执行算术运算(例如加法)。

此过程涉及从最右侧的维度开始对齐维度并根据需要拉伸较小数组的维度。

示例

在下面的示例中,我们广播一维数组“a”以匹配二维数组“b”的维度 -

import numpy as np

# Creating multi-dimensional arrays
a = np.array([1, 2, 3])
b = np.array([[10], [20], [30]])

# Adding multi-dimensional arrays with broadcasting
result = a + b
print(result)

获得的输出如下所示 -

[[11 12 13]
 [21 22 23]
 [31 32 33]]

使用广播应用函数进行加法

NumPy 中的广播不仅简化了直接的元素级算术运算,还允许对不同形状的数组应用函数。使用广播,您可以对具有不同形状的数组应用各种数学函数。

示例

在此示例中,我们将标量“10”添加到数组“a”的每个元素中,然后逐元素应用“正弦”函数 -

import numpy as np

# Creating an array
a = np.array([1, 2, 3])

# Applying a function with broadcasting
result = np.sin(a + 10)
print(result)

执行上述代码后,我们将获得以下输出 -

[-0.99999021 -0.53657292  0.42016704]

添加不兼容的数组

如果我们尝试在 NumPy 中添加不兼容的数组,则操作将失败并引发ValueError。NumPy 使用广播对不同形状的数组进行运算,但这只有在形状根据特定规则兼容时才有可能。

广播通过从最右边的维度开始对齐数组的维度并向后工作来实现。对于两个维度才能兼容,它们必须相等或其中一个必须为 1(在这种情况下,它将被广播以匹配另一个维度)。

如果数组的形状不满足这些条件,则无法进行广播,并且操作会导致错误。

示例

在这种情况下,数组“a”和“b”的形状对于广播不兼容,导致错误 -

import numpy as np

# Creating arrays with incompatible shapes
a = np.array([1, 2, 3])
b = np.array([[10, 20], [30, 40]])

# Attempting to add incompatible arrays
result = a + b
print(result)

产生的结果如下 -

Traceback (most recent call last):File "/home/cg/root/66a1de2fae52f/main.py", line 8, in <module>result = a + bValueError: operands could not be broadcast together with shapes (3,) (2,2) 
广告
© . All rights reserved.