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) 
廣告