数学函数
NumPy 提供许多数学函数,包含三角函数、指数、对数、最小公倍数、最大公因数...等,可以快速计算数组中的元素,这篇教学将会介绍 NumPy 常用的数学函数。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
NumPy 常用数学函数
下方列出几种 NumPy 常用的数学函数 ( 完整函数可参考 NumPy 官方文件:Arithmetic operations ):
| 分类 | 说明 |
|---|---|
| 三角函数 | 包含 sin、cos、tan、斜边、角度转弧度...等三角函数计算函数。 |
| 四舍五入 | 包含 around、round、floor、ceil...等四舍五入进位函数。 |
| 总和、乘积、差值 | 包含 prod、sum、diff...等计算总和、乘积或差值的函数。 |
| 极值 | 包含 maximum、minimum...等求出最大值、最小值的函数。 |
| 其他计算公式 | 包含 square、cbrt、absolute...等求平方、立方、绝对值的函数。 |
三角函数
下方列出 NumPy 常用的三角函数函数:
| 函数 | 参数 | 说明 |
|---|---|---|
| numpy.sin() | a | 正弦函数,参数单位为弧度。 |
| numpy.cos() | a | 余弦函数,参数单位为弧度。 |
| numpy.tan() | a | 正切函数,参数单位为弧度。 |
| numpy.arcsin() | a | 反正弦函数,参数单位为弧度。 |
| numpy.arccos() | a | 反正弦函数,参数单位为弧度。 |
| numpy.arctan() | a | 反正弦函数,参数单位为弧度。 |
| numpy.hypot() | a,b | 直角三角形已知两边,求出斜边长。 |
| numpy.degrees()、numpy.rad2deg() | a | 弧度转角度。 |
| numpy.radians()、numpy.deg2rad() | a | 角度转弧度。 |
import numpy as np
a = np.array([30,60,90]) # 起始陣列為 30、60、90 度
b = np.deg2rad(a) # 轉換成弧度陣列
print(np.sin(b)) # [0.5 0.8660254 1. ]
print(np.cos(b)) # [8.66025404e-01 5.00000000e-01 6.12323400e-17]
print(np.tan(b)) # [5.77350269e-01 1.73205081e+00 1.63312394e+16]
x = np.array([30,60,90]) # 直角三角形某一邊
y = np.array([30,30,30]) # 直角三角形某一邊
z = np.hypot(x, y)
print(z) # [42.42640687 67.08203932 94.86832981]
四舍五入
下方列出 NumPy 常用的四舍五入函数:
| 函数 | 参数 | 说明 |
|---|---|---|
| numpy.around() | a, decimals | 四舍五入,decimals 为四舍五入的小数点位数 ( 默认 0 ),设定“负值”则是整数字数。 |
| numpy.rint() | a | 四舍五入到最接近的整数。 |
| numpy.fix()、numpy.trunc() | a | 舍弃所有小数点,只取出整数。 |
| numpy.floor() | a | 进位至数字区间整数的最小值。 |
| numpy.ceil() | a | 进位至数字区间整数的最大值。 |
import numpy as np
a = np.array([110.3333, 122.5, 155.4999])
print(np.around(a)) # [110. 122. 155.]
print(np.around(a, 2)) # [110.33 122.5 155.5 ]
print(np.around(a, -1)) # [110. 120. 160.]
print(np.around(a, -2)) # [100. 100. 200.]
print(np.fix(a)) # [110. 122. 155.]
print(np.trunc(a)) # [110. 122. 155.]
b = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
print(np.rint(b)) # [-2. -2. -0. 0. 2. 2. 2.]
print(np.floor(b)) # [-2. -2. -1. 0. 1. 1. 2.]
print(np.ceil(b)) # [-1. -1. -0. 1. 2. 2. 2.]
总和、乘积、差值
下方列出 NumPy 常用的和、乘积、差值函数:
| 函数 | 参数 | 说明 |
|---|---|---|
| numpy.prod() | a, axis | 返回所有元素的乘积,指定 axis 则返回特定维度元素的乘积。 |
| numpy.sum() | a, axis | 返回所有元素的加总,指定 axis 则返回特定维度元素的加总。 |
| numpy.cumprod() | a, axis | 返回所有元素的累积乘积,指定 axis 则返回特定维度元素的累积乘积。 |
| numpy.cumsum() | a, axis | 返回所有元素的累积加总,指定 axis 则返回特定维度元素的累积加总。 |
| numpy.diff() | a, axis | 返回所有元素的离散差。 |
| numpy.ediff1d() | a, axis | 返回所有元素与元素之间的差异。 |
import numpy as np
a = np.array([[1,3,5],[6,7,8]])
print(np.prod(a)) # 5040
print(np.prod(a,0)) # [ 6 21 40] --> 1*6、3*7、5*8
print(np.prod(a,1)) # [ 15 336] --> 1*3*5、6*7*8
print(np.sum(a)) # 30
print(np.sum(a,0)) # [ 7 10 13] --> 1+6、3+7、5+8
print(np.sum(a,1)) # [ 9 21] --> 1+3+5、6+7+8
print(np.cumprod(a)) # [ 1 3 15 90 630 5040]
print(np.cumsum(a)) # [ 1 4 9 15 22 30]
print(np.diff(a)) # [[2 2] [1 1]]
print(np.ediff1d(a)) # [2 2 1 1 1]
极值
下方列出 NumPy 常用的极值函数:
| 函数 | 参数 | 说明 |
|---|---|---|
| numpy.maximum()、numpy.fmax() | a, b | 取出 a、b 两个数组中的最大值,组成新的数组。 |
| numpy.minimum()、numpy.fmin() | a, axis | 取出 a、b 两个数组中的最小值,组成新的数组。 |
| numpy.amax() | a, axis | 取出 a 数组中的最大值,指定 axis 则将最大值组合成新的数组。 |
| numpy.amin() | a, axis | 取出 a 数组中的最小值,指定 axis 则将最小值组合成新的数组。 |
import numpy as np
a = np.array([1,9,5,4,7])
b = np.array([2,6,8,6,3])
print(np.maximum(a,b)) # [2 9 8 6 7]
print(np.fmax(a,b)) # [2 9 8 6 7]
print(np.minimum(a,b)) # [1 6 5 4 3]
print(np.fmin(a,b)) # [1 6 5 4 3]
c = np.array([[1,9,5,4,7],[2,6,8,6,3]])
print(np.amax(c)) # 9
print(np.amax(c,0)) # [2 9 8 6 7]
print(np.amax(c,1)) # [9 8]
print(np.amin(c)) # 1
print(np.amin(c,0)) # [1 6 5 4 3]
print(np.amin(c,1)) # [1 2]
其他计算公式
下方列出 NumPy 其他常用的函数:
| 函数 | 参数 | 说明 |
|---|---|---|
| numpy.lcm() | a, b | 计算 a、b 两个数组元素的最小公倍数,组成新的数组。 |
| numpy.gcd() | a, b | 计算 a、b 两个数组元素的最大公因数,组成新的数组。 |
| numpy.sqrt() | a | 计算 a 数组元素的平方根 ( a 元素必须为正值 ),组成新的数组。 |
| numpy.cbrt() | a | 计算 a 数组元素的立方根,组成新的数组。 |
| numpy.square() | a | 计算 a 数组元素的平方,组合成新的数组。 |
| numpy.absolute()、numpy.fabs() | a | 计算 a 数组元素的绝对值 ( fabs 计算后为浮点数 ),组合成新的数组。 |
| numpy.clip() | a, min, max | 替换 a 数组中数值超过 min 或 max 的元素,组成新的数组。 |
import numpy as np
a = np.array([15,20,6,8,11])
b = np.array([25,50,18,6,33])
print(np.lcm(a,b)) # [ 75 100 18 24 33]
# 最小公倍數
print(np.gcd(a,b)) # [ 5 10 6 2 11]
# 最大公因數
c = np.array([8,9,64])
print(np.sqrt(c)) # [2.82842712 3. 8. ]
print(np.cbrt(c)) # [2. 2.08008382 4. ]
d = np.array([-2,-1,0,1,2])
print(np.fabs(d)) # [2. 1. 0. 1. 2.]
print(np.absolute(d)) # [2 1 0 1 2]
e = np.array([1,2,3,4,5,6,7,8,9])
print(np.clip(e,3,6)) # [3 3 3 4 5 6 6 6 6]
# 剪裁小於 3 的都變成 3,大於 6 的都變成 6
print(np.clip(e,3,1)) # [1 1 1 1 1 1 1 1 1]
# 因為 max 為 1,剪裁後全部都變成 1
微信扫码关注
抖音扫码关注