python求复数的相位_Python⼊门教程(三):史上最全的
Numpy计算函数总结,建。。。
点击上⽅ 蓝字 关注我们
Numpy提供了灵活的、静态类型的、可编译的程序接⼝⼝来优化数组的计算,也被称作向量操作,因此
在Python数据科学界Numpy显得尤为重要。Numpy的向量操作是通过通⽤函数实现的。今天⼩编会给⼤家较为全⾯地介绍下Numpy的通⽤函数。
01 数组的运算
Numpy通⽤函数涉及到Python原⽣的算术运算符,标准的加减乘除都可以使⽤,同时这些运算符也是Numpy内置函数的简单封装器,例如“+”就是add函数的封装器。下图汇总了Numpy实现的算术运算符。
Numpy的加减乘除运算
x = np.arange(4)
print("x    =", x)
print("x + 5 =", x + 5)
print("x - 5 =", x - 5)
print("x * 2 =", x * 2)
print("x / 2 =", x / 2)
print("x // 2 =", x // 2)  # 向下整除
# x    = [0 1 2 3]
# x + 5 = [5 6 7 8]
# x - 5 = [-5 -4 -3 -2]
# x * 2 = [0 2 4 6]
# x / 2 = [ 0.  0.5  1.  1.5]
# x // 2 = [0 0 1 1]
求负数、**表⽰求指数运算符以及%表⽰求%运算符,请看下⾯⽰例:
print
"-x    = "
print("x ** 2 = ", x ** 2)
print("x % 2  = ", x % 2)
# -x    =  [ 0 -1 -2 -3]
# x ** 2 =  [0 1 4 9]
# x % 2  =  [0 1 0 1]
如果多个运算符组合使⽤时,需要考虑这些运算符的⼀个优先级。
-(0.5*x + 1) ** 2
# array([-1.  , -2.25, -4.  , -6.25])
使⽤封装函数计算标准的加减乘除。
np.add(x, 2)
# array([2, 3, 4, 5])
02 绝对值
Numpy通⽤的绝对值函数是np.absolute,也可以⽤其别名来访问np.abs。这个通⽤函数也可以处理复数,处理复数时,绝对值返回的是该复数的模。
x = np.array([-2, -1, 0, 1, 2])
abs(x)
# array([2, 1, 0, 1, 2])
np.absolute(x)
#  array([2, 1, 0, 1, 2])
np.abs(x)
#  array([2, 1, 0, 1, 2])
x = np.array([3 - 4j, 4 - 3j, 2 + 0j, 0 + 1j])
np.abs(x)
# array([ 5.,  5.,  2.,  1.])
03 三⾓函数
三⾓函数是数据科学中常⽤到的函数,这⾥会讲解三⾓函数的计算以及逆三⾓函数的计算。
⾸先,我们需要先定义⼀个⾓度数组,然后通过cos(),sin(),tan()等三⾓函数进⾏计算。
theta = np.linspace(0, np.pi, 3)
print("theta      = ", theta)
print("sin(theta) = ", np.sin(theta))
print("cos(theta) = ", np.cos(theta))
print("tan(theta) = ", np.tan(theta))
# theta      =  [ 0.          1.57079633  3.14159265]
# sin(theta) =  [  0.00000000e+00  1.00000000e+00  1.22464680e-16]
# cos(theta) =  [  1.00000000e+00  6.12323400e-17  -1.00000000e+00]
# tan(theta) =  [  0.00000000e+00  1.63312394e+16  -1.22464680e-16]
同样我们也可以计算逆三⾓函数。
x = [-1, 0, 1]
print("x        = ", x)
print("arcsin(x) = ", np.arcsin(x))
print("arccos(x) = ", np.arccos(x))
print("arctan(x) = ", np.arctan(x))
# x        =  [-1, 0, 1]
# arcsin(x) =  [-1.57079633  0.          1.57079633]
# arccos(x) =  [ 3.14159265  1.57079633  0.        ]
# arctan(x) =  [-0.78539816  0.          0.78539816]
04 指数和对数
Numpy中的指数运算。
x = [1, 2, 3]
print("x    =", x)
print("e^x  =", np.exp(x))
print("2^x  =", np.exp2(x))
print("3^x  =", np.power(3, x))
# x    = [1, 2, 3]
# e^x  = [  2.71828183  7.3890561  20.08553692]
# 2^x  = [ 2.  4.  8.]
# 3^x  = [ 3  9 27
Numpy中的对数运算。
对数运算是指数运算的逆运算,最基础的np.log是以⾃然对数为底数的对数,同时也可以使⽤np.log2,np.log10等计算以2或10为底的对数。
x = [1, 2, 4, 10]
print("x        =", x)
print("ln(x)    =", np.log(x))
print("log2(x)  =", np.log2(x))
print("log10(x) =", np.log10(x))
# x        = [1, 2, 4, 10]
# ln(x)    = [ 0.          0.69314718  1.38629436  2.30258509]
# log2(x)  = [ 0.          1.          2.          3.32192809]
# log10(x) = [ 0.          0.30103    0.60205999  1.        ]
特殊情况下,对于⾮常⼩的输⼊值可以保持较好的精度。当x很⼩时,以下函数给出的值np.log和np.exp的计算更加精确。
x = [0, 0.001, 0.01, 0.1]
print("exp(x) - 1 =", np.expm1(x))
print("log(1 + x) =", np.log1p(x))
# exp(x) - 1 = [ 0.          0.0010005  0.01005017  0.10517092]
# log(1 + x) = [ 0.          0.0009995  0.00995033  0.09531018]
05 专⽤的通⽤函数
Numpy还提供了很多通⽤函数,包括了双曲三⾓函数,⽐特位运算,⽐较运算符,弧度转化为⾓度的运算,取整和求余运算。除此之外呢,Python中还有更加专⽤的通⽤函数模块scipy.special,下⾯会为⼤家展⽰⼀部分的代码⽚段。linspace numpy
Gamma函数(⼴义阶乘,generlized factorials)和相关函数
from scipy import special
x = [1, 5, 10]
print("gamma(x)    =", special.gamma(x))
print("ln|gamma(x)| =", special.gammaln(x))
print("beta(x, 2)  =", special.beta(x, 2))
# gamma(x)    = [  1.00000000e+00  2.40000000e+01  3.62880000e+05]
# ln|gamma(x)| = [  0.          3.17805383  12.80182748]
# beta(x, 2)  = [ 0.5        0.03333333  0.00909091]
误差函数(⾼斯积分)
⾼斯积分的实现和逆实现
# Error function (integral of Gaussian)
# its complement, and its inverse
x = np.array([0, 0.3, 0.7, 1.0])
print("erf(x)  =", f(x))
print("erfc(x) =", fc(x))
print("erfinv(x) =", finv(x))
# erf(x)  = [ 0.          0.32862676  0.67780119  0.84270079]
# erfc(x) = [ 1.          0.67137324  0.32219881  0.15729921]
# erfinv(x) = [ 0.          0.27246271  0.73286908        inf]
06 指定输出
所有的通⽤函数都可以通过out参数来指定计算结果的存放位置。
x = np.arange(5)
y = np.empty(5)
np.multiply(x, 10, out=y)
print(y)
# [  0.  10.  20.  30.  40.]
这个特性也可以被称为数组视图,例如将计算结果写⼊指定数组的每隔⼀个元素的位置。
y = np.zeros(10)
np.power(2, x, out=y[::2])
print(y)
# [  1.  0.  2.  0.  4.  0.  8.  0.  16.  0.]
07 聚合
我们希望⽤⼀个特定的运算reduce⼀个数组,那么可以⽤任何通⽤函数的reduce⽅法。⼀个reduce⽅法会对给定元素和操作重复执⾏,直到得到这个结果。
对add通⽤函数调⽤reduce⽅法会返回数组中所有元素的和。
x = np.arange(1, 6)
duce(x)
# 15
对multiply通⽤函数调⽤reduce⽅法会返回数组中所有元素的乘积。
duce(x)
# 120
accumulate函数可以储存每次计算的中间结果表。
np.add.accumulate(x)
# array([ 1,  3,  6, 10, 15]
np.multiply.accumulate(x)
array([  1,  2,  6,  24, 120])
# array([  1,  2,  6,  24, 120])
任何通⽤函数都可以⽤outer⽅法获得两个不同输⼊数组所有元素对函数运算的结果。这意味着⼀⾏代码实现⼀个乘法表。
通⽤函数还能够操纵形状和⼤⼩不⼀样的数组,⼀组这样的操作被称为⼴播,后⾯会细讲。
x = np.arange(1, 6)
np.multiply.outer(x, x)
# array([[ 1,  2,  3,  4,  5],
#        [ 2,  4,  6,  8, 10],
#        [ 3,  6,  9, 12, 15],
#        [ 4,  8, 12, 16, 20],
#        [ 5, 10, 15, 20, 25]])
全部代码已上传,数据万花筒
数据万花筒后台回复【Numpy计算函数】即可获得。
往期推荐
Python⼊门教程(⼀):初识Numpy
Python⼊门教程(⼆):Numpy数组基础
SQL知识⼤全(六):SQL中的开窗函数
刷爆全⽹的动态条形图,原来5⾏Python代码就能实现!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。