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