
- 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的每個元素都加到陣列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)