NumPy 中的向量加法

Manav Narula 2023年1月30日
  1. 在 NumPy 中使用 numpy.add() 函数执行向量加法
  2. 在 NumPy 中使用 numpy.ndarray.__add__() 函数执行向量加法
  3. 在 NumPy 中使用+ 操作符来执行向量加法
  4. 两个数组大小不相等时该怎么办
NumPy 中的向量加法

列表的一维数组可以视为向量。在 Python 中,我们使用 numpy 模块对数组执行不同的操作。

在本教程中,我们将讨论如何在 Python 中执行向量加法。

当我们说向量加法时,意味着要添加两个数组。在下面讨论的所有方法中,数组的长度必须相同。否则,将引发 ValueError。

在 NumPy 中使用 numpy.add() 函数执行向量加法

numpy 模块中的 add() 函数可用于添加两个数组。它对具有相同大小的数组执行加法运算,并且将每个对应位置的元素求和。

例如,

import numpy as np

arr1 = np.array([3, 2, 1])
arr2 = np.array([1, 2, 3])

s = np.add(arr1, arr2)
print(s)

输出:

[4 4 4]

在 NumPy 中使用 numpy.ndarray.__add__() 函数执行向量加法

numpy.ndarray.__add__() 函数用于向数组的每个元素添加一些值。我们可以通过将第二个数组传递给此函数来使用它执行向量加法。

例如,

import numpy as np

arr1 = np.array([3, 2, 1])
arr2 = np.array([1, 2, 3])

s = arr1.__add__(arr2)
print(s)

输出:

[4 4 4]

在 NumPy 中使用+ 操作符来执行向量加法

我们可以通过简单地使用算术运算符+ 来计算两个数组的总和,从而避免使用任何函数。

例如,

import numpy as np

arr1 = np.array([3, 2, 1])
arr2 = np.array([1, 2, 3])

s = arr1 + arr2
print(s)

输出:

[4 4 4]

两个数组大小不相等时该怎么办

前面已经讨论过,如果数组的大小不同,则上述所有方法都将返回 ValueError。在这种情况下,我们可以手动用 0 填充较小的数组,或者使用 numpy.pad() 函数正常执行加法,或者创建我们自己的函数执行加法。

请参见下面的代码。

import numpy as np

a = np.array([3, 2, 1])
b = np.array([1, 2])


def unequal_add(a, b):
    if len(a) < len(b):
        c = b.copy()
        c[: len(a)] += a
    else:
        c = a.copy()
        c[: len(b)] += b
    return c


print(unequal_add(a, b))

输出:

[4 4 1]

我们要做的是复制较长的数组,然后将较小数组的元素添加到较长的数组中。此方法将消耗大量内存。

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn