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