Numpy-------(九)

1. numpy.where(condition[,x,y]):它类似于python的 x if condition else y 。condition/x/y 都是数组,要求形状相同或者通过广播之后形状相同。产生结果的方式为:如果condition 某个元素为True或者非零,则对应的结果元素从x中获取;否则对应的结果元素从y中获取。

2. 如果分段数量增加,则需要嵌套多层的where()。 此时可以使用select():numpy.select(condlist,choicelist,default =0)。

x%2==1 ,则 1,3,5,7,9先选出来,并占据相应位置,然后看第二个条件,y%3 == 1, 则100,106选出来,并占据相应位置,然后 1004,选出来,剩余的都为true 并设置成-1.

3. 采用where/select时,所有的参数需要在调用它们之前完成。在计算时还会产生许多保存中间结果的数组。因此如果输入数组很大,则将会发生大量内存分配和释放。 为此numpy提供了piecewise函数: numpy.piecewise(x, condlist, funclist, *args, **kw)

  • x:为分段函数的自变量取值数组

  • condlist:为一个列表,列表元素为布尔数组,数组形状和x相同。

  • funclist:为一个列表,列表元素为函数对象。其长度与condlist相同或者比它长1。

    • condlist[i]对应位置为 True时,则该位置处的输出值由 funclist[i]来计算。如果funclist长度比condlist长1,则当所有的condlist都是False时,则使用 funclist[len(condlist)]来计算。如果有多个符合条件,则使用最后一个遇到的(而不是第一个遇到的)
    • 列表元素可以为数值,表示一个返回为常数值(就是该数值)的函数。

4. 多项式

    一元多项式类的构造:(注意系数按照次数从高次到低次排列)

class numpy.poly1d(c_or_r, r=0, variable=None)
  • c_or_r:一个数组或者序列。其意义取决于r
  • r:布尔值。如果为True,则c_or_r指定的是多项式的根((x-n1)(x-n2)....=0的形式。);如果为False,则c_or_r指定的是多项式的系数。
  • variable:一个字符串,指定了打印多项式时,用什么字符代表自变量。默认为x。

多项式的属性有:

  • .coeffs属性:多项式的系数。
  • .order属性:多项式最高次的次数。
  • .variable属性:自变量的代表字符。

多项式的方法有:

  • .deriv(m=1)方法:计算多项式的微分。可以通过参数m指定微分次数。
  • .integ(m=1,k=0)方法:计算多项式的积分。可以通过参数m指定积分次数和k积分常量。

操作一元多项式类的函数:

  • 多项式对象可以像函数一样,返回多项式的值。
  • 多项式对象进行加减乘除,相当于对应的多项式进行计算。也可以使用对应的。numpy.polyadd/polysub/polymul/polydiv/函数。
  • numpy.polyder/numpy.polyint:进行微分/积分操作。
  • numpy.roots函数:求多项式的根(也可以通过p.r方法)。

操作一元多项式类的函数:

  • 多项式对象可以像函数一样,返回多项式的值
  • 多项式对象进行加减乘除,相当于对应的多项式进行计算。也可以使用对应的numpy.polyadd/polysub/polymul/polydiv/函数。
  • numpy.polyder/numpy.polyint:进行微分/积分操作
  • numpy.roots函数:求多项式的根(也可以通过p.r方法)

使用np.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)函数可以对一组数据使用多项式函数进行拟合(最小均方误差)。其参数为:

  • x:数据点的x坐标序列
  • y:数据点的y坐标序列。如果某个x坐标由两个点,你可以传入一个二维数组。
  • deg:拟合多项式的次数
  • rcond:指定了求解过程中的条件:当某个特征值/最大特征值<rcond时,该特征值被抛弃
  • full:如果为False,则仅仅返回拟合多项式的系数;如果为True,则更多的结果被返回
  • w:权重序列。它对y序列的每个位置赋予一个权重
  • cov:如果为True,则返回相关矩阵。如果fullTrue,则不返回。

默认情况下,返回两个数组:一个是拟合多项式的系数;另一个是数据的相关矩阵。

    

numpy提供了更丰富的多项式函数类。注意其中的多项式的系数按照次数从小到大排列。

  • numpy.polynomial.Polynomial:一元多次多项式
  • numpy.polynomial.Chebyshev:切比雪夫多项式
  • numpy.polynomial.Laguerre:拉盖尔多项式
  • numpy.polynomial.Legendre:勒让德多项式
  • numpy.polynomial.Hermite:哈米特多项式
  • numpy.polynomial.HermiteEHermiteE多项式

所有的这些多项式的构造函数为: XXX(coef, domain=None, window=None)。其中XXX为多项式类名。domain为自变量取值范围,默认为[-1,1]window指定了将domain映射到的范围,默认为[-1,1]

如切比雪夫多项式在[-1,1]上为正交多项式。因此只有在该区间上才能正确插值拟合多项式。为了使得对任何区域的目标函数进行插值拟合,所以在domain指定拟合的目标区间。

所有的这些多项式可以使用的方法为:

  • 四则运行
  • .basis(deg[, domain, window]):获取转换后的一元多项式
  • .convert(domain=None, kind=None, window=None):转换为另一个格式的多项式。kind为目标格式的多项式的类
  • .degree():返回次数
  • .fit(x, y, deg[, domain, rcond, full, w, window]):拟合数据,返回拟合后的多项式
  • .fromroots(roots[, domain, window]):从根创建多项式
  • .has_samecoef(other).has_samedomain(other).has_sametype(other).has_samewindow(other):判断是否有相同的系数/domain/类型/window
  • .roots():返回多项式的根
  • .trim([tol]):将系数小于 tol的项截掉
  • 函数调用的方式

            

    

    

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值