您的位置:首页 > 编程语言 > Python开发

Numpy数值计算

2018-02-01 00:13 190 查看

三角函数

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

sin(x)
:三角正弦。

cos(x)
:三角余弦。

tan(x)
:三角正切。

arcsin(x)
:三角反正弦。

arccos(x)
:三角反余弦。

arctan(x)
:三角反正切。

hypot(x1,x2)
:直角三角形求斜边。

degrees(x)
:弧度转换为度。

radians(x)
:度转换为弧度。

deg2rad(x)
:度转换为弧度。

rad2deg(x)
:弧度转换为度。

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

import numpy as np

np.rad2deg(np.pi)

180.0


双曲函数

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

sinh(x)
:双曲正弦。

cosh(x)
:双曲余弦。

tanh(x)
:双曲正切。

arcsinh(x)
:反双曲正弦。

arccosh(x)
:反双曲余弦。

arctanh(x)
:反双曲正切。

数值修约

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

around(a)
:平均到给定的小数位数。

round_(a)
:将数组舍入到给定的小数位数。

rint(x)
:修约到最接近的整数。

fix(x, y)
:向 0 舍入到最接近的整数。

floor(x)
:返回输入的底部(标量 x 的底部是最大的整数 i)。

ceil(x)
:返回输入的上限(标量 x 的底部是最小的整数 i).

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.])


求和、求积、差分

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

prod(a, axis, dtype, keepdims)
:返回指定轴上的数组元素的乘积。

sum(a, axis, dtype, keepdims)
:返回指定轴上的数组元素的总和。

nanprod(a, axis, dtype, keepdims)
:返回指定轴上的数组元素的乘积, 将 NaN 视作 1。

nansum(a, axis, dtype, keepdims)
:返回指定轴上的数组元素的总和, 将 NaN 视作 0。

cumprod(a, axis, dtype)
:返回沿给定轴的元素的累积乘积。

cumsum(a, axis, dtype)
:返回沿给定轴的元素的累积总和。

nancumprod(a, axis, dtype)
:返回沿给定轴的元素的累积乘积, 将 NaN 视作 1。

nancumsum(a, axis, dtype)
:返回沿给定轴的元素的累积总和, 将 NaN 视作 0。

diff(a, n, axis)
:计算沿指定轴的第 n 个离散差分。

ediff1d(ary, to_end, to_begin)
:数组的连续元素之间的差异。

gradient(f)
:返回 N 维数组的梯度。

cross(a, b, axisa, axisb, axisc, axis)
:返回两个(数组)向量的叉积。

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])


指数和对数

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

exp(x)
:计算输入数组中所有元素的指数。

expm1(x)
:对数组中的所有元素计算 exp(x) - 1.

exp2(x)
:对于输入数组中的所有 p, 计算 2 ** p。

log(x)
:计算自然对数。

log10(x)
:计算常用对数。

log2(x)
:计算二进制对数。

log1p(x)
log(1 + x)


logaddexp(x1, x2)
log2(2**x1 + 2**x2)


logaddexp2(x1, x2)
log(exp(x1) + exp(x2))


算术运算

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

add(x1, x2)
:对应元素相加。

reciprocal(x)
:求倒数 1/x。

negative(x)
:求对应负数。

multiply(x1, x2)
:求解乘法。

divide(x1, x2)
:相除 x1/x2。

power(x1, x2)
:类似于 x1^x2。

subtract(x1, x2)
:减法。

fmod(x1, x2)
:返回除法的元素余项。

mod(x1, x2)
:返回余项。

modf(x1)
:返回数组的小数和整数部分。

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 中还有一些用于数学运算的方法,归纳如下:

angle(z, deg)
:返回复参数的角度。

real(val)
:返回数组元素的实部。

imag(val)
:返回数组元素的虚部。

conj(x)
:按元素方式返回共轭复数。

convolve(a, v, mode)
:返回线性卷积。

sqrt(x)
:平方根。

cbrt(x)
:立方根。

square(x)
:平方。

absolute(x)
:绝对值, 可求解复数。

fabs(x)
:绝对值。

sign(x)
:符号函数。

maximum(x1, x2)
:最大值。

minimum(x1, x2)
:最小值。

nan_to_num(x)
:用 0 替换 NaN。

interp(x, xp, fp, left, right, period)
:线性插值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Numpy Python