一、Numpy 常用函數分類概覽
函數類別 | 常用函數 |
---|---|
基本數學函數 | np.sum(x) 、np.sqrt(x) 、np.exp(x) 、np.log(x) 、np.sin(x) 、np.abs(x) 、np.power(a, b) 、np.round(x, n) ?等 |
統計函數 | np.mean(x) 、np.median(x) 、np.std(x) 、np.var(x) 、np.min(x) 、np.max(x) 、np.percentile(x, q) ?等 |
比較函數 | np.greater(a, b) 、np.less(a, b) 、np.equal(a, b) 、np.logical_and(a, b) 、np.isnan(x) ?等 |
數組操作函數 | np.concatenate((a, b)) 、np.split(x, indices) 、np.reshape(x, shape) 、np.copy(x) 、np.unique(x) 、np.sort(x) ?等 |
其他常用函數 | np.where(condition, x, y) 、np.in1d(a, b) 、np.argsort(x) 、np.lexsort(keys) ?等 |
?二、詳細函數示例及說明
1. 基本數學函數
(1)平方根計算?np.sqrt(x)
import numpy as np# 計算單個數值的平方根
print(np.sqrt(9)) # 輸出:3.0# 計算數組的平方根
print(np.sqrt([1, 4, 9])) # 輸出:[1. 2. 3.]# 對ndarray數組進行操作
arr1 = np.array([1, 225, 81])
print(np.sqrt(arr1)) # 輸出:[ 1. 15. 9.]
(2)指數計算?np.exp(x)
import numpy as np# 計算e的n次方(e≈2.718)
print(np.exp(1)) # 輸出:2.718281828459045(e^1)
print(np.exp(2)) # 輸出:7.38905609893065(e^2)
print(np.exp(0)) # 輸出:1(e^0=1)
(3)自然對數計算?np.log(x)
import numpy as np# 計算自然對數(以e為底)
print(np.log(1)) # 輸出:0.0(ln(1)=0)
print(np.log(np.e)) # 輸出:1.0(ln(e)=1)
(4)三角函數?np.sin(x)
、np.cos(x)
import numpy as np# 計算正弦值(參數為弧度)
print(np.sin(1)) # 輸出:0.8414709848078965(sin(1弧度))# 計算π的正弦和余弦
print(np.sin(np.pi)) # 輸出:1.2246467991473532e-16(≈0,sin(π)=0)
print(np.cos(np.pi)) # 輸出:-1.0(cos(π)=-1)
(5)絕對值?np.abs(x)
import numpy as nparr = np.array([1, -2, 3, 4, -5])
print(np.abs(arr)) # 輸出:[1 2 3 4 5](所有元素取絕對值)
(6)冪運算?np.power(a, b)
import numpy as nparr = np.array([1, -2, 3, 4, -5])
print(np.power(arr, 2)) # 輸出:[ 1 4 9 16 25](每個元素的平方)
(7)四舍五入?np.round(x, n)
import numpy as nparr = np.array([2.1, -0.6, 1.9])
print(np.round(arr)) # 輸出:[ 2. -1. 2.](默認保留0位小數)
(8)取整函數?np.ceil(x)
、np.floor(x)
import numpy as nparr = np.array([1.2, 1.7, 0.9])
print(np.ceil(arr)) # 輸出:[2. 2. 1.](向上取整)
print(np.floor(arr)) # 輸出:[1. 1. 0.](向下取整)
(9)缺失值檢測?np.isnan(x)
import numpy as np# 無缺失值的數組
arr = np.array([1, 2, 3])
print(np.isnan(arr)) # 輸出:[False False False]# 含缺失值(np.nan)的數組
arr = np.array([1, np.nan, 3])
print(np.isnan(arr)) # 輸出:[False True False](True表示對應位置是缺失值)
2. 統計函數
(1)求和?np.sum(x)
import numpy as np# 隨機生成3x3數組(元素為1-100的整數)
arr = np.random.randint(1, 100, (3, 3))
print(arr) # 示例輸出:[[75 77 70][58 52 10][10 28 20]]
print(np.sum(arr)) # 輸出:400(數組所有元素的和)
(2)平均值?np.mean(x)
import numpy as nparr = np.random.randint(1, 10, (3, 3))
print(arr) # 示例輸出:[[1 1 2][9 3 8][5 3 4]]
print(np.mean(arr)) # 輸出:4.0(所有元素的平均值)
(3)中位數?np.median(x)
import numpy as nparr = np.random.randint(1, 10, 5)
print(arr) # 示例輸出:[6 6 6 8 7](先隨機生成5個元素)
print(np.median(arr)) # 輸出:6.0(排序后中間位置的元素)
(4)方差與標準差
- 方差?
np.var(x)
:衡量數據離散程度(平均值與每個數據點差的平方的平均值) - 標準差?
np.std(x)
:方差的平方根,與原數據單位一致
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.var(arr)) # 輸出:2.0(方差)
print(np.std(arr)) # 輸出:1.4142135623730951(標準差)
(5)最值與索引?np.max(x)
、np.min(x)
、np.argmax(x)
、np.argmin(x)
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.max(arr), np.argmax(arr)) # 輸出:5 4(最大值為5,位于索引4的位置)
print(np.min(arr), np.argmin(arr)) # 輸出:1 0(最小值為1,位于索引0的位置)
(6)分位數?np.percentile(x, q)
分位數是將一組數據按照從小到大的順序排列后,處于某一特定百分比位置的數值。它可以理解為:
- 把數據分成 100 等份,第
q
個分位數就是處于第q%
位置的數值(q
的取值范圍是 0-100) - 例如:第 50 個分位數就是中位數,即數據中一半的值小于等于它,一半的值大于等于它
import numpy as np# 定義一個簡單的1維數組
arr = np.array([1, 2, 3, 4, 5])# 計算第50個分位數(中位數)
print(np.percentile(arr, 50)) # 輸出:3.0
# 解釋:數組排序后,中間位置的元素是3,因此50%分位數為3# 計算第40個分位數
print(np.percentile(arr, 40)) # 輸出:2.6
# 解釋:
# 1. 數組排序后索引為0-4(共5個元素)
# 2. 第40%位置的索引 = 40% * (5-1) = 1.6(即位于索引1和2之間)
# 3. 索引1的值為2,索引2的值為3,線性插值計算:2 + 0.6*(3-2) = 2.6
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 同時計算多個分位數(25%、50%、75%)
print(np.percentile(arr, [25, 50, 75])) # 輸出:[2. 3. 4. ]
# 解釋:
# - 25%分位數:位于索引0.75處,插值后為2.0
# - 50%分位數:即中位數3.0
# - 75%分位數:位于索引2.25處,插值后為4.0
?
(7)累積和?np.cumsum(x)
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.cumsum(arr)) # 輸出:[ 1 3 6 10 15](依次累加的結果:1, 1+2=3, 3+3=6, ...)