科学计算-----第二天3

涉及到了求和,中值,下标,多项式等等。

import numpy as np

#sum
a=np.random.randint(0,10,size=(4,5))
sum1=np.sum(a)
sum2=np.sum(a,axis=1) #每行求和
sum3=np.sum(a,axis=0) #每列求和
#mean,average平均值  median中值
mean1=np.mean(a,axis=1)#每行求均值
median1=np.median(a,axis=1)#每行求中值
mean2=np.empty(4) #建立一个空数组
np.mean(a,axis=1,out=mean2) #out指定输出到哪个数组
mean3=np.average(a,axis=1) #average等同于mean,但是没有out参数与dtype参数
#std,var 标准差,方差
std1=np.std(a,axis=1)
#min max,argmax argmin
maxm=np.max(a,axis=1)
maxm_index=np.argmax(a,axis=1) #最大值对应的下标
#argmax,argmin若不指定axis,则返回平坦化后的数组下标
#数组平坦化
a1=a.ravel()
#将一维下标,转化为多维数组的下标
idx=np.unravel_index(6,a.shape)
#sort 排序
sort_a=np.sort(a)
sort_a=np.sort(a,axis=0)
#排序下标
idx=np.argsort(a)
#ogrid 产生第0轴的下标
#对相互关联的数组排序
x,_=np.ogrid[:a.shape[0],:a.shape[1]]
maxm=a[x,idx]

#多项式函数 f=x^3-2*x+1
b=np.array([1.0,0,-2,1])
p=np.poly1d(b) #一元多项式
result=p(np.linspace(0,1,5)) #将值代入一元多项式,得到结果
#p1=p+poly1d([-2,1])
p1=p+[-2,1]
p2=p*p #两个多项式相乘得到6次多项式
p3=p/[1,1] #f=phi*q+r,返回商与余数
#deriv,integ多项式的微分与积分
p4=p.deriv()
p5=p.integ()
p==p.integ().deriv()
#多项式的根
r=np.roots(p)
#依据根,转化为多项式系数
p6=np.poly(r)
#多项式相乘
np.polymul([1,1],[1,1])
#多项式拟合,sin为奇函数,所以使用奇数阶对其拟合
#polyfit多项式拟合 polyval计算多项式的值
x=np.linspace(-np.pi/2,np.pi/2,1000)
y=np.sin(x)
for deg in [3,5,7]:
    a=np.polyfit(x,y,deg) #deg为多项式阶数
    error=np.abs(np.polyval(a,x)-y)
    print(deg,a)
    print(max(error))
    print('-'*20)
#观察出七阶拟合的最大误差比较大

发布了53 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37083038/article/details/102767563