提高python数值计算速度

以下是自己写的一个python脚本,用来进行高斯展开的,可发现运行速度特别慢,短板应该是数值计算,请问有没有什么方式可以加快它的运行速度?另外,我一直是自学的,代码肯定有... 以下是自己写的一个python脚本,用来进行高斯展开的,可发现运行速度特别慢,短板应该是数值计算,请问有没有什么方式可以加快它的运行速度?另外,我一直是自学的,代码肯定有许多不足之处,还望指点...
#!/usr/bin/python3.4
import numpy as np
import sys
def gaussian(start=0, end=10, step=0.5, parameter=('sigma', 0.1), inp=[]):
if parameter[0]=='sigma':
sigma=parameter[1]
elif parameter[0]=='FWHM':
sigma=parameter[1]/(2*np.sqrt(2*np.log(2)))
else:
sigma=1
print('sigma is set to 1')
i=start
outp=[]
while i<=end:
height=0
for j in inp:
try:
height+=j[1]*np.exp(-(j[0]-i)**2/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
except IndexError:
height+=np.exp(-(j[0]-i)**2/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
outp.append((i, height))
i+=step
return outp
f=open(sys.argv[1], 'r')
lines=f.readlines()
f.close()
inp=[]
for i in range(len(lines)):
hang=[]
for j in lines[i].split():
hang.append(float(j))
inp.append(hang)
outp=gaussian(float(sys.argv[2]), float(sys.argv[3]), float(sys.argv[4]), (sys.argv[5], float(sys.argv[6])), inp)
text=''
for i in range(len(outp)):
text+='%15.9f%15.9f\n' % (outp[i][0], outp[i][1])
w=open('gaussian.dat', 'w')
w.write(text)
w.close()
展开
 我来答
迷之少年A
2014-05-22 · TA获得超过1203个赞
知道小有建树答主
回答量:581
采纳率:0%
帮助的人:415万
展开全部
把那些不含自变量的表达式,都提前算出来,log(2) 什么的,避免重复运算。
另外依据你的精度要求适当放宽精度,我记得好像有环境变量可以控制,也许能提高速度,不保证
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fa...1@gmail.com
2014-05-22
知道答主
回答量:1
采纳率:0%
帮助的人:1375
展开全部
使用Cython, 可以差不多达到C语言的速度。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式