12.Numpy数值计算

三角函数

首先, 看一看 numpy 提供的三角函数功能。这些方法有:

  1. sin(x):三角正弦。
  2. cos(x):三角余弦。
  3. tan(x):三角正切。
  4. arcsin(x):三角反正弦。
  5. arccos(x):三角反余弦。
  6. arctan(x):三角反正切。
  7. hypot(x1,x2):直角三角形求斜边。
  8. degrees(x):弧度转换为度。
  9. radians(x):度转换为弧度。
  10. deg2rad(x):度转换为弧度。
  11. rad2deg(x):弧度转换为度。

比如,我们可以用上面提到的 rad2deg(x) 将弧度转换为度。

import numpy as np

np.rad2deg(np.pi)

这些函数非常简单,就不再一一举例了。

双曲函数

在数学中,双曲函数是一类与常见的三角函数类似的函数。双曲函数经常出现于某些重要的线性微分方程的解中,使用 numpy 计算它们的方法为:

  1. sinh(x):双曲正弦。
  2. cosh(x):双曲余弦。
  3. tanh(x):双曲正切。
  4. arcsinh(x):反双曲正弦。
  5. arccosh(x):反双曲余弦。
  6. arctanh(x):反双曲正切。

数值修约

数值修约, 又称数字修约, 是指在进行具体的数字运算前, 按照一定的规则确定一致的位数, 然后舍去某些数字后面多余的尾数的过程[via. 维基百科]。比如, 我们常听到的「4 舍 5 入」就属于数值修约中的一种。

  1. around(a):平均到给定的小数位数。
  2. round_(a):将数组舍入到给定的小数位数。
  3. rint(x):修约到最接近的整数。
  4. fix(x, y):向 0 舍入到最接近的整数。
  5. floor(x):返回输入的底部(标量 x 的底部是最大的整数 i)。
  6. ceil(x):返回输入的上限(标量 x 的底部是最小的整数 i).
  7. trunc(x):返回输入的截断值。

随机选择几个浮点数,看一看上面方法的区别。

>>> import numpy as np

>>> a = np.array([1.21, 2.53, 3.86])
>>> a
array([ 1.21,  2.53,  3.86])

>>> np.around(a)
array([ 1.,  3.,  4.])

>>> np.round_(a)
array([ 1.,  3.,  4.])

>>> np.rint(a)
array([ 1.,  3.,  4.])

>>> np.fix(a)
array([ 1.,  2.,  3.])

>>> np.floor(a)
array([ 1.,  2.,  3.])

>>> np.ceil(a)
array([ 2.,  3.,  4.])

>>> np.trunc(a)
array([ 1.,  2.,  3.])

求和、求积、差分

下面这些方法用于数组内元素或数组间进行求和、求积以及进行差分。

  1. prod(a, axis, dtype, keepdims):返回指定轴上的数组元素的乘积。
  2. sum(a, axis, dtype, keepdims):返回指定轴上的数组元素的总和。
  3. nanprod(a, axis, dtype, keepdims):返回指定轴上的数组元素的乘积, 将 NaN 视作 1。
  4. nansum(a, axis, dtype, keepdims):返回指定轴上的数组元素的总和, 将 NaN 视作 0。
  5. cumprod(a, axis, dtype):返回沿给定轴的元素的累积乘积。
  6. cumsum(a, axis, dtype):返回沿给定轴的元素的累积总和。
  7. nancumprod(a, axis, dtype):返回沿给定轴的元素的累积乘积, 将 NaN 视作 1。
  8. nancumsum(a, axis, dtype):返回沿给定轴的元素的累积总和, 将 NaN 视作 0。
  9. diff(a, n, axis):计算沿指定轴的第 n 个离散差分。
  10. ediff1d(ary, to_end, to_begin):数组的连续元素之间的差异。
  11. gradient(f):返回 N 维数组的梯度。
  12. cross(a, b, axisa, axisb, axisc, axis):返回两个(数组)向量的叉积。
  13. trapz(y, x, dx, axis):使用复合梯形规则沿给定轴积分。

下面,我们选取几个举例测试一下:

>>> import numpy as np
>>> a=np.arange(5)
>>> a
array([0, 1, 2, 3, 4])

>>> np.prod(a) # 所有元素乘积
0

>>> np.sum(a) # 所有元素和
10

>>> np.nanprod(a) # 默认轴上所有元素乘积
0

>>> np.nansum(a) # 默认轴上所有元素和
10

>>> np.cumprod(a) # 默认轴上元素的累积乘积。
array([0, 0, 0, 0, 0])

>>> np.diff(a) # 默认轴上元素差分。
array([1, 1, 1, 1])

指数和对数

如果你需要进行指数或者对数求解,可以用到以下这些方法。

  1. exp(x):计算输入数组中所有元素的指数。
  2. expm1(x):对数组中的所有元素计算 exp(x) - 1.
  3. exp2(x):对于输入数组中的所有 p, 计算 2 ** p。
  4. log(x):计算自然对数。
  5. log10(x):计算常用对数。
  6. log2(x):计算二进制对数。
  7. log1p(x)log(1 + x)
  8. logaddexp(x1, x2)log2(2**x1 + 2**x2)
  9. logaddexp2(x1, x2)log(exp(x1) + exp(x2))

算术运算

当然,numpy 也提供了一些用于算术运算的方法,使用起来会比 python 提供的运算符灵活一些,主要是可以直接针对数组。

  1. add(x1, x2):对应元素相加。
  2. reciprocal(x):求倒数 1/x。
  3. negative(x):求对应负数。
  4. multiply(x1, x2):求解乘法。
  5. divide(x1, x2):相除 x1/x2。
  6. power(x1, x2):类似于 x1^x2。
  7. subtract(x1, x2):减法。
  8. fmod(x1, x2):返回除法的元素余项。
  9. mod(x1, x2):返回余项。
  10. modf(x1):返回数组的小数和整数部分。
  11. remainder(x1, x2):返回除法余数。
>>> import numpy as np

>>> a1 = np.random.randint(0, 10, 5)
>>> a2 = np.random.randint(0, 10, 5)

>>> a1
array([3, 7, 8, 0, 0])

>>> a2
array([1, 8, 6, 4, 4])

>>> np.add(a1, a2)
array([ 4, 15, 14,  4,  4])

>>> np.reciprocal(a1)
array([0, 0, 0, , ])

>>> np.negative(a1)
array([-3, -7, -8,  0,  0])

>>> np.multiply(a1, a2)
array([ 3, 56, 48,  0,  0])

>>> np.divide(a1, a2)
array([3, 0, 1, 0, 0])

>>> np.power(a1, a2)
array([3,5764801,262144,0,0])

>>> np.subtract(a1, a2)
array([ 2, -1,  2, -4, -4])

>>> np.fmod(a1, a2)
array([0, 7, 2, 0, 0])

>>> np.mod(a1, a2)
array([0, 7, 2, 0, 0])

>>> np.modf(a1)
(array([ 0.,  0.,  0.,  0.,  0.]), array([ 3.,  7.,  8.,  0.,  0.]))

>>> np.remainder(a1, a2)
array([0, 7, 2, 0, 0])
>>>

矩阵和向量积

求解向量、矩阵、张量的点积等同样是 numpy 非常强大的地方。

  1. dot(a,b):求解两个数组的点积。
  2. vdot(a,b):求解两个向量的点积。
  3. inner(a,b):求解两个数组的内积。
  4. outer(a,b):求解两个向量的外积。
  5. matmul(a,b):求解两个数组的矩阵乘积。
  6. tensordot(a,b):求解张量点积。
  7. kron(a,b):计算 Kronecker 乘积。

其他

除了上面这些归好类别的方法,numpy 中还有一些用于数学运算的方法,归纳如下:

  1. angle(z, deg):返回复参数的角度。
  2. real(val):返回数组元素的实部。
  3. imag(val):返回数组元素的虚部。
  4. conj(x):按元素方式返回共轭复数。
  5. convolve(a, v, mode):返回线性卷积。
  6. sqrt(x):平方根。
  7. cbrt(x):立方根。
  8. square(x):平方。
  9. absolute(x):绝对值, 可求解复数。
  10. fabs(x):绝对值。
  11. sign(x):符号函数。
  12. maximum(x1, x2):最大值。
  13. minimum(x1, x2):最小值。
  14. nan_to_num(x):用 0 替换 NaN。
  15. interp(x, xp, fp, left, right, period):线性插值。

转载于:https://www.cnblogs.com/oneTOinf/p/10514407.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值