
- 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 中,除法運算子 / 用於執行逐元素除法。如果陣列具有不同的形狀但對於廣播是相容的,NumPy 將自動應用廣播規則來執行除法。
示例
在下面的示例中,我們將陣列 a 的每個元素除以陣列 b 中對應的元素:
import numpy as np # Creating two arrays a = np.array([10, 20, 30]) b = np.array([2, 5, 10]) # Performing element-wise division result = a / b print(result)
以下是獲得的輸出:
[5. 4. 3.]
NumPy 中的標量除法
NumPy 中的標量除法是指將陣列的每個元素除以單個標量值。此操作將除法應用於陣列的每個元素,從而產生一個新陣列,其中每個元素都除以標量。
示例
在這個例子中,我們將陣列“a”的每個元素除以標量“10”:
import numpy as np # Creating an array a = np.array([10, 20, 30]) # Dividing by a scalar result = a / 10 print(result)
這將產生以下結果:
[1. 2. 3.]
陣列除法中的廣播
廣播允許對不同形狀的陣列進行運算。當對不同形狀的陣列執行除法時,NumPy 會自動調整形狀以便可以執行該運算。
在執行陣列除法時,廣播允許您透過自動沿缺失維度擴充套件較小的陣列以匹配較大陣列的形狀來除不同大小或形狀的陣列。
這種擴充套件以允許逐元素運算(如除法)在不顯式複製資料的情況下執行的方式進行。
示例
在下面的示例中,陣列“b”被廣播以匹配陣列“a”的形狀,然後執行逐元素除法:
import numpy as np # Creating arrays with different shapes a = np.array([[10, 20, 30], [40, 50, 60]]) b = np.array([10, 5, 2]) # Performing division with broadcasting result = a / b print(result)
以下是上述程式碼的輸出:
[[ 1. 4. 15.] [ 4. 10. 30.]]
處理除以零
在 NumPy 中執行除法運算時,一個常見問題是可能除以零,這可能導致未定義或無限的結果。NumPy 提供了處理此類情況的方法,可以透過返回特殊值(如 inf 或 nan)或根據具體用例引發警告或錯誤來實現。
- 正/負無窮大 (inf 或 -inf) − 當正數或負數除以零時返回。
- 非數字 (nan) − 當零除以零時返回。
示例:基本的除以零
讓我們看看 NumPy 如何處理簡單的除以零:
import numpy as np # Creating an array with a zero element array = np.array([10, 0, -5]) # Dividing a constant by the array result = 100 / array print(result)
NumPy 不會引發錯誤,而是返回除以零的“inf”:
/home/cg/root/66c57b63ef7f5/main.py:7: RuntimeWarning: divide by zero encountered in divide result = 100 / array [ 10. inf -20.]
示例:使用 errstate() 函式處理除以零
您可以使用 np.errstate() 函式控制 NumPy 如何處理除以零。此函式允許您指定是否忽略、警告或為浮點錯誤(如除以零)引發錯誤:
import numpy as np # Creating an array with a zero element array = np.array([10, 0, -5]) with np.errstate(divide='ignore', invalid='ignore'): result = 100 / array print(result)
在這裡,我們將 errstate() 函式中的“divide”引數設定為“ignore”以忽略通常在除以零時出現的警告。結果仍然包含“inf”,但沒有任何中斷或警告:
/home/cg/root/66c57b63ef7f5/main.py:7: RuntimeWarning: divide by zero encountered in divide result = 100 / array [ 10. inf -20.]
示例:處理 nan 值
當零除以零時,結果為 nan(非數字)。此特殊值用於表示浮點計算中未定義或無法表示的值:
import numpy as np # Creating arrays with zero elements numerator = np.array([0, 1, 2]) denominator = np.array([0, 0, 2]) # Performing division result = numerator / denominator print(result)
產生的結果如下:
[ 10. inf -20.]
不同資料型別的除法
當對不同資料型別的陣列執行除法時,NumPy 會自動將資料型別提升到可以安全地包含結果的公共型別。
例如,如果您將整數陣列除以浮點陣列,則結果將是浮點陣列。這種型別提升可以防止資料丟失並確保結果的精度。
示例
在此示例中,NumPy 在執行除法之前將整數陣列 a 提升為浮點型別以匹配陣列 b 的資料型別:
import numpy as np # Creating arrays with different data types a = np.array([10, 20, 30], dtype=np.int32) b = np.array([2.5, 5.0, 10.0], dtype=np.float64) # Performing division result = a / b print(result)
我們得到如下所示的輸出:
[4. 4. 3.]
NumPy 中的矩陣除法
矩陣除法不像逐元素除法或標量除法那樣簡單。但是,您可以使用 NumPy 中矩陣的逆矩陣進行矩陣乘法來解決類似矩陣除法的運算。
示例
在此示例中,我們使用矩陣 B 的逆矩陣在 NumPy 中執行類似除法的運算:
import numpy as np # Creating a matrix A = np.array([[1, 2], [3, 4]]) # Creating another matrix B = np.array([[2, 0], [1, 3]]) # Solving the matrix division A/B # Equivalent to A * B^-1 result = np.dot(A, np.linalg.inv(B)) print(result)
以下是獲得的輸出:
[[0.16666667 0.66666667] [0.83333333 1.33333333]]
處理除法中的維度不匹配
當在 NumPy 中對陣列執行除法運算時,如果陣列不共享相容的形狀,則可能會發生維度不匹配。NumPy 透過廣播來解決此問題,並在這種情況下引發 ValueError。
示例
在下面的示例中,“a”和“b”的形狀對於廣播不相容,導致錯誤:
import numpy as np # Creating arrays with incompatible shapes a = np.array([1, 2, 3]) b = np.array([[1, 2], [3, 4]]) # Attempting to divide incompatible arrays result = a / b print(result)
產生的結果如下:
Traceback (most recent call last): File "/home/cg/root/66c57b63ef7f5/main.py", line 8, in <module> result = a / b ValueError: operands could not be broadcast together with shapes (3,) (2,2)