Numpy 一元函數
通用函數(即 ufunc)是一種對 ndarray 中的數據執行元素級運算的函數。你可以將其看作簡單函數的矢量化封裝結果。本小節主要講述僅接受一個標量值、并產生一個或多個標量值的情況,這里稱之為一元函數。
Numpy 中包含了大量的這類數學運算,包括三角函數、舍入取整函數、運算函數等。
1. 三角函數
1.1 三角函數
Numpy 提供了標準的三角函數:sin()、cos()、tan(),通過接受弧度值,返回對應的結果:
案例
arr0 = np.array([1/6, 2/6, 3/6, 4/6, 5/6])*np.pi
arr0
out:
array([0.52359878, 1.04719755, 1.57079633, 2.0943951 , 2.61799388])
查看arr0中角度的正弦值:
arr0_sin = np.sin(arr0)
arr0_sin
out:
array([0.5 , 0.8660254, 1. , 0.8660254, 0.5 ])
查看arr0中角度的余弦值:
arr0_cos = np.cos(arr0)
arr0_cos
out:
array([ 8.66025404e-01, 5.00000000e-01, 6.12323400e-17, -5.00000000e-01,
-8.66025404e-01])
查看arr0中角度的正切值:
arr0_tan = np.tan(arr0)
arr0_tan
out:
array([ 5.77350269e-01, 1.73205081e+00, 1.63312394e+16, -1.73205081e+00,
-5.77350269e-01])
Numpy 常用的三角函數包括:
函數 | 說明 |
---|---|
sin、cos、tan | 普通的正弦、余弦、正切函數 |
sinh、cosh、tanh | 雙曲正弦、雙曲余弦、雙曲正切 |
1.2 反三角函數
Numpy 提供了相對應的反三角函數:
案例
將上個案例中生成的arr0_sin、arr0_cos和arr0_tan進行反轉求角度。
利用反正弦函數,還原arr0_sin的角度:
np.arcsin(arr0_sin)
out:
array([0.52359878, 1.04719755, 1.57079633, 1.04719755, 0.52359878])
利用反余弦函數,還原 arr0_cos 的角度:
np.arccos(arr0_cos)
out:
array([0.52359878, 1.04719755, 1.57079633, 2.0943951 , 2.61799388])
利用反正切函數,還原arr0_tan的角度:
np.arctan(arr0_tan)
out:
array([ 0.52359878, 1.04719755, 1.57079633, -1.04719755, -0.52359878])
Numpy 常用的三角函數包括:
函數 | 說明 |
---|---|
arcsin、arccos、arctan | 反正弦、反余弦、反正切函數 |
arcsinh、arccosh、arctanh | 反雙曲正弦、反雙曲余弦、反雙曲正切 |
2. 數值修約函數
數值修約,又稱數字修約,是指在進行具體的數字運算前,按照一定的規則確定一致的位數,然后舍去某些數字后面多余的尾數的過程。比如, 我們常提到的四舍五入,就屬于數值修約中的一種。
常用的數值修約函數如下:
函數 | 說明 |
---|---|
around | 返回指定數字的四舍五入值。 |
floor | 返回小于或者等于指定表達式的最大整數,即向下取整。 |
ceil | 返回大于或者等于指定表達式的最小整數,即向上取整。 |
rint | 將各元素四舍五入到最接近的整數。 |
2.1 四舍五入around函數
around的原型如下:
numpy.around(a,decimals)
函數接受的參數詳解如下:
參數 | 說明 |
---|---|
a | 輸入數組 |
decimals | 舍入的小數位數。 默認值為0。 如果為負,整數將四舍五入到小數點左側的位置 |
案例
隨機創建數組方針:
arr1 = np.random.normal(loc=0, scale=10, size=(3,3))
查看生成的數組:
arr1
out:
array([[ 1.34267058, 9.75751399, -3.90599534],
[ -1.55227132, 16.08729251, 9.02619899],
[-18.69375818, -12.57922124, 1.88648572]])
對arr1進行四舍五入取整:
np.around(arr1)
out:
array([[ 1., 10., -4.],
[ -2., 16., 9.],
[-19., -13., 2.]])
把arr1四舍五入到2位小數:
np.around(arr1, 2)
out:
array([[ 1.34, 9.76, -3.91],
[ -1.55, 16.09, 9.03],
[-18.69, -12.58, 1.89]])
把arr1四舍五入到小數點左側一位:
np.around(arr1, -1)
out:
array([[ 0., 10., -0.],
[ -0., 20., 10.],
[-20., -10., 0.]])
2.2 其他取整函數
常用的取整方法有:向上取整(ceil)、向下取整(floor)和四舍五入(rint)。這里以向下取整為例,進行說明,其他函數的用法基本類似。
案例
對 arr1 進行向下取整:
np.floor(arr1)
out:
array([[ 1., 9., -4.],
[ -2., 16., 9.],
[-19., -13., 1.]])
3. 算數運算
3.1 算數運算
常用的一元算數運算函數有:
函數 | 說明 |
---|---|
abs | 計算整數、浮點數的絕對值 |
sqrt | 計算各元素的平方根 |
square | 計算各元素的平方 |
exp | 計算各元素的指數ex |
log、log10、log2、log1p | 分別位自然對數(底數為e)、底數為10 的log、底數為2的log、log(1+x) |
案例
這里以計算arr1的絕對值為例,進行演示:
np.abs(arr1)
out:
array([[ 1.34267058, 9.75751399, 3.90599534],
[ 1.55227132, 16.08729251, 9.02619899],
[18.69375818, 12.57922124, 1.88648572]])
4. 判斷空值
4.1 isnan
函數說明:該函數返回一個表示哪些值是NaN的布爾型數組。
案例
創建一個包含空值的數組:
arr2 = np.array([1,2,np.nan, 4])
arr2
out:
array([ 1., 2., nan, 4.])
判斷數組中的空值:
np.isnan(arr2)
out:
array([False, False, True, False])
5. 小結
本節重點介紹了 Numpy 中常見的一元函數,包括:三角與反三角函數、數值修約函數、一元算術運算、空值判斷方法。