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常用【数值计算】函数总结(1):生成数组、读取数组、数组操作
- 数值计算扩展--numpy
- python科学计算-数值计算-NumPy
- NumPy数值计算(1)
- 【脚本语言系列】关于Python数值计算NumPy, 你需要知道的事
- Python画图库 matplotlib, 数值计算库 numpy, 科学计算库 scipy 的安装
- Python学习笔记之(三)——强大的数值计算利器 Numpy
- Python数值计算工具包numpy,scipy,theano等的安装--Anaconda
- pandas擅长数据I/O处理numpy擅长数组数值计算
- python数值计算扩展—— NumPy
- Python画图库 matplotlib, 数值计算库 numpy, 科学计算库 scipy 的安装
- NumPy常用【数值计算】函数总结(2):ufunc运算、矩阵运算
- Matlab 数值计算----斯特芬森加速迭代法
- 数值计算程序大放送-线性代数方程组
- MATLAB基础学习----数值的计算(1)
- 个人喜欢的关于模式识别、机器学习、推荐系统、图像特征、深度学习、数值计算、目标跟踪等方面个人主页及博客
- 批处理之字符串处理和数值计算
- python 学习之 用python做科学计算Numpy
- 一些数值计算的知识
- js数值计算