
- NumPy 教程
- NumPy - 首頁
- NumPy - 簡介
- NumPy - 環境配置
- NumPy 陣列
- NumPy - Ndarray 物件
- NumPy - 資料型別
- NumPy 陣列的建立和操作
- NumPy - 陣列建立例程
- NumPy - 陣列操作
- NumPy - 從現有資料建立陣列
- NumPy - 從數值範圍建立陣列
- NumPy - 陣列迭代
- NumPy - 陣列重塑
- NumPy - 陣列連線
- NumPy - 陣列堆疊
- NumPy - 陣列分割
- NumPy - 陣列扁平化
- NumPy - 陣列轉置
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高階索引
- NumPy 陣列屬性和運算
- NumPy - 陣列屬性
- NumPy - 陣列形狀
- NumPy - 陣列大小
- NumPy - 陣列步長
- NumPy - 陣列元素大小
- NumPy - 廣播
- NumPy - 算術運算
- NumPy - 陣列加法
- NumPy - 陣列減法
- NumPy - 陣列乘法
- NumPy - 陣列除法
- NumPy 高階陣列運算
- NumPy - 交換陣列軸
- NumPy - 位元組交換
- NumPy - 複製和檢視
- NumPy - 元素級陣列比較
- NumPy - 陣列過濾
- NumPy - 陣列連線
- NumPy - 排序、搜尋和計數函式
- NumPy - 陣列搜尋
- NumPy - 陣列並集
- NumPy - 查詢唯一行
- NumPy - 建立日期時間陣列
- NumPy - 二元運算子
- NumPy - 字串函式
- NumPy - 數學函式
- NumPy - 統計函式
- NumPy - 矩陣庫
- NumPy - 線性代數
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 繪製直方圖
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高階操作
- NumPy - 陣列排序
- NumPy - 沿軸排序
- NumPy - 使用花式索引排序
- NumPy - 結構化陣列
- NumPy - 建立結構化陣列
- NumPy - 操作結構化陣列
- NumPy - 欄位訪問
- NumPy - 記錄陣列
- Numpy - 載入陣列
- Numpy - 儲存陣列
- NumPy - 向陣列追加值
- NumPy - 交換陣列列
- NumPy - 向陣列插入軸
- NumPy 處理缺失資料
- NumPy - 處理缺失資料
- NumPy - 識別缺失值
- NumPy - 刪除缺失資料
- NumPy - 填充缺失資料
- NumPy 效能最佳化
- NumPy - 使用陣列進行效能最佳化
- NumPy - 使用陣列進行向量化
- NumPy - 陣列的記憶體佈局
- Numpy 線性代數
- NumPy - 線性代數
- NumPy - 矩陣庫
- NumPy - 矩陣加法
- NumPy - 矩陣減法
- NumPy - 矩陣乘法
- NumPy - 元素級矩陣運算
- NumPy - 點積
- NumPy - 矩陣求逆
- NumPy - 行列式計算
- NumPy - 特徵值
- NumPy - 特徵向量
- NumPy - 奇異值分解
- NumPy - 求解線性方程組
- NumPy - 矩陣範數
- NumPy 元素級矩陣運算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位數
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合運算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 並集
- NumPy - 差集
- NumPy 有用資源
- NumPy 編譯器
- NumPy - 快速指南
- NumPy - 有用資源
- NumPy - 討論
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)