目錄
NumPy模塊介紹
3.6.1 數組之間的運算
3.6.2 算術運算
3.6.3 比較運算
3.6.4 邏輯運算
3.6.5 矩陣運算
3.6.6 廣播運算
3.6.7 聚合運算
3.6.8 三角函數與指數對數運算
3.6.9 位運算
3.6.10 條件運算
3.6.11 數組的統計運算
3.6.12 關鍵問題:數組之間的運算對數組的維度有要求嗎?
3.6.13 總結
NumPy模塊介紹
NumPy 是 Python 科學計算領域的重要基石,與當前 “躺吃旅行” 話題看似不相關,但在數據處理分析上意義重大。我將從它的核心功能、應用場景和優勢等方面展開介紹。
NumPy(Numerical Python)是 Python 語言中用于科學計算的基礎庫,它提供了高性能的多維數組對象以及大量用于對數組進行操作的函數,是數據科學、機器學習、人工智能等領域不可或缺的工具。NumPy 的核心數據結構是ndarray(多維數組),這種數組允許在內存中以連續的方式存儲同類型的數據,相較于 Python 原生列表,它在存儲和運算效率上有著顯著提升。通過 NumPy,用戶可以輕松實現數組的創建、索引、切片、變形,以及各種數學運算,如矩陣乘法、統計計算、傅里葉變換等。
在實際應用中,NumPy 廣泛應用于數據分析、機器學習算法的底層實現、圖像和信號處理等領域。例如,在機器學習中,數據集通常會被加載并轉換為 NumPy 數組進行預處理和模型訓練;在圖像處理中,圖像數據也會被表示為多維數組,借助 NumPy 提供的函數完成圖像的濾波、變換等操作。此外,NumPy 還與眾多科學計算庫緊密集成,如 SciPy、Pandas 等,共同構建起強大的 Python 科學計算生態,極大地提升了數據處理和分析的效率。
3.6.1 數組之間的運算
在 NumPy 中,數組之間的運算可以分為以下幾種類型,每種類型都有其獨特的應用場景和計算規則:
3.6.2 算術運算
對數組元素執行逐元素的數學運算,包括:
- 基本運算符:+、-、*、/、//(整除)、%(取余)、**(冪運算)
- 對應函數:add()、subtract()、multiply()、divide()、floor_divide()、mod()、power()
示例:
import numpy as npa = np.array([1, 2, 3])
b = np.array([4, 5, 6])print(a + b) # 輸出: [5 7 9]
print(a * b) # 輸出: [4 10 18]
print(np.power(a, 2)) # 輸出: [1 4 9]
3.6.3 比較運算
對數組元素執行逐元素的比較,返回布爾數組,包括:
- 比較運算符:>、<、>=、<=、==、!=
- 對應函數:greater()、less()、greater_equal()、less_equal()、equal()、not_equal()
示例:
a = np.array([1, 2, 3])
b = np.array([2, 2, 2])print(a > b) # 輸出: [False False True]
print(a == b) # 輸出: [False True False]
數組之間的比較運算在實際運用中還是比較廣泛的,為了加深同學們對這一塊知識的理解,我編寫了兩個案例,供大家學習掌握,并能在實際編程中靈活運用。
示例 1:檢測學生成績是否達標
假設有兩個班級的數學考試成績,需要比較哪些學生的成績達到了 80 分的優秀標準。
import numpy as np# 創建兩個班級的成績數組
class_a = np.array([78, 85, 92, 65, 88])
class_b = np.array([82, 76, 90, 85, 89])# 比較成績是否達到80分
excellent_a = class_a >= 80
excellent_b = class_b >= 80print("班級A優秀學生:", excellent_a) # [False True True False True]
print("班級B優秀學生:", excellent_b) # [ True False True True True]# 統計優秀學生人數
print("班級A優秀人數:", np.sum(excellent_a)) # 3
print("班級B優秀人數:", np.sum(excellent_b)) # 4
示例 2:篩選符合條件的二維數據
假設有一個二維數組表示商品的價格和銷量,需要篩選出價格高于 50 且銷量大于 100 的商品。
import numpy as np# 創建商品數據:每行表示 [價格, 銷量]
products = np.array([[60, 120],[45, 80],[70, 150],[55, 90],[80, 200]
])# 比較價格和銷量
price_high = products[:, 0] > 50 # 價格列
sales_high = products[:, 1] > 100 # 銷量列# 同時滿足兩個條件
both_high = price_high & sales_highprint("價格>50的商品:", price_high) # [ True False True True True]
print("銷量>100的商品:", sales_high) # [ True False True False True]
print("符合條件的商品:", both_high) # [ True False True False True]# 篩選符合條件的商品數據
selected_products = products[both_high]
print("篩選結果:\n", selected_products)
# 輸出:
# [[ 60 120]
# [ 70 150]
# [ 80 200]]
關鍵要點
- 比較運算返回布爾數組:可直接用于統計或篩選。
- 多維數組按元素比較:通過索引選擇特定維度(如products[:, 0])。
- 邏輯組合條件:使用&(與)、|(或)、~(非)連接多個比較結果。
3.6.4 邏輯運算
對布爾數組執行逐元素的邏輯操作,包括:
- 邏輯運算符:&(與)、|(或)、~(非)、^(異或)
- 對應函數:logical_and()、logical_or()、logical_not()、logical_xor()
示例