NumPy - 数组减法



NumPy 数组减法

NumPy 数组减法允许您对数组执行元素级减法。此运算将一个数组的对应元素从另一个形状相同的数组中减去,生成一个具有相同形状的新数组,其中包含减去后的值。

如果数组的形状不同,NumPy 可以在某些条件下广播较小的数组以匹配较大数组的形状。

NumPy 中的元素级减法

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

这种类型的减法运算在形状相同的数组上进行,对来自两个数组的每一对元素分别执行减法运算。

示例

在下面的示例中,我们将数组a的每个元素从数组a的对应元素中减去:

import numpy as np

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

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

以下是获得的输出:

[4 4 4]

从 NumPy 数组中减去标量

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

广播解释了 NumPy 如何管理涉及不同形状数组的算术运算。当在计算中使用形状不同的数组时,NumPy 会根据广播规则自动调整它们的形状以彼此兼容。

示例

在此示例中,我们将标量“10”从数组“a”的每个元素中减去:

import numpy as np

# Creating an array
a = np.array([5, 6, 7])

# Subtracting a scalar
result = a - 2
print(result)

这将产生以下结果:

[3 4 5]

减去不同形状的 NumPy 数组

NumPy 中的广播允许通过调整数组的维度以使其彼此匹配来减去不同形状的数组。

NumPy 通过从最右边开始比较并向左移动来对齐广播的维度。如果维度相等,或者如果一个维度为 1(然后扩展以匹配另一个维度),则维度是兼容的。

当维度无法直接对齐时,NumPy 会根据需要沿不匹配的维度扩展较小的数组以适应较大数组的形状。

示例

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

import numpy as np

# Creating arrays with different shapes
a = np.array([[5, 6, 7], [8, 9, 10]])
b = np.array([1, 2, 3])

# Subtracting arrays with broadcasting
result = a - b
print(result)

以下是上述代码的输出:

[[4 4 4]
 [7 7 7]]

使用广播减去多维数组

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

示例

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

import numpy as np

# Creating multi-dimensional arrays
a = np.array([[10, 20, 30], [40, 50, 60]])
b = np.array([5, 15, 25])

# Subtracting multi-dimensional arrays with broadcasting
result = a - b[np.newaxis, :]
print(result)

获得的输出如下所示:

[[ 5 15 25]
 [25 35 45]]

使用具有广播功能的函数进行减法

NumPy 中的广播不仅允许直接进行元素级算术运算,而且还便于对不同形状的数组应用函数。使用广播,您可以对不同形状的数组使用各种数学函数。

示例

在此示例中,我们将标量“5”从数组“a”的每个元素中减去,然后逐元素应用“正弦”函数:

import numpy as np

# Creating an array
a = np.array([10, 20, 30])

# Applying a function with broadcasting
result = np.sin(a - 5)
print(result)

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

[-0.95892427 -0.7568025   0.14112001]

减去不兼容的数组

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

示例

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

import numpy as np

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

# Subtracting 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) 
广告