Python中文
首页
教程
问答
标签
搜索
登录
注册
Python:如何修复routin
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在尝试编写一段代码,将过滤器应用于数据集。滤波器有两个关键的数据位,波长和吞吐量。数据文件还有两个关键的数据位,波长和流量。不幸的是,滤波器文件和数据文件中的波长并不总是匹配的。下面的代码旨在使用<code>y=mx+c</code>在数据点之间进行插值,从而在不等于滤波器文件中波长的波长处获得通过滤波器的通量的近似值</p> <pre><code>def openfilterfile(filterfile): throughput=[] filterwavelength=[] text_file2 = open(filterfile, "r") lines2 = text_file2.read() #print lines2 text_file2.close() b = [float(y) for y in lines2.split()] b1=0 b2=1 while b1<len(b): filterwavelength.append(b[b1]) throughput.append(b[b2]) b1+=2 b2+=2 print len(filterwavelength), len(throughput) f=scipy.interpolate.interp1d(filterwavelength, throughput, kind='linear') xnew = filterwavelength ynew = f(xnew) pylab.plot(filterwavelength, throughput, xnew, ynew) pylab.xlim(0, 25000) pylab.show() return filterwavelength, throughput def accountforfilter(wavelength, flux, filterwavelength, throughput): filteredwavelength=[] filteredflux=[] for i in range(len(wavelength)): for j in range(len(wavelength)): if wavelength[i]==filterwavelength[j]: j=filterwavelength.index(wavelength[i]) filteredwavelength.append(wavelength[i]) filteredflux.append(flux[i]*throughput[j]) elif wavelength[i]<filterwavelength[j]<wavelength[i+1]: filteredwavelength.append(wavelength[i]) filteredflux.append(flux[i]*f(wavelength[i])) elif wavelength[i]<filterwavelength[j]: i+=1 elif wavelength[i]>filterwavelength[j+1]: j+=1 return filteredwavelength, filteredflux </code></pre> <p>运行此操作时,会收到错误消息:</p> <pre><code>Traceback (most recent call last): File "C:\Python27\05.12.2014.py", line 103, in <module> filteredwavelength, filteredflux = accountforfilter(wavelength, flux, filterwavelength, throughput) File "C:\Python27\05.12.2014.py", line 87, in accountforfilter if wavelength[i]==filterwavelength[j]: IndexError: list index out of range </code></pre> <p>如果我改变它,使<code>j</code>在<code>range(filterwavelength)</code>上,那么程序会连续运行,但我认为它会在每个I的所有j上循环,这需要永远。有更好的写作方法吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>是的,这就是为什么你会有例外 <code>j</code>使用了错误的最大长度。你肯定需要改变:</p> <p><code>for j in range(len(wavelength)):</code></p> <p>至</p> <p><code>for j in range(len(filterwavelength)):</code></p> <p>人们不知道你说的“我不想循环”是什么意思</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
9 回答
如何添加表示整数的擦边字符串?
4 回答
如何添加要在Bokeh中使用的新font.ttf文件?
5 回答
如何添加要显示的矩阵XY轴编号和XY轴
6 回答
如何添加计数?
3 回答
如何添加计数器函数?
6 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
9 回答
如何添加计数器来跟踪while循环中的月份和年份?
7 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
7 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
3 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
7 回答
如何添加评论拉梅尔亚姆
10 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
10 回答
如何添加谷歌地点自动完成到Flask?
7 回答
如何添加超时、python discord bot
1 回答
如何添加超过1dp的检查
9 回答
如何添加距离方法
6 回答
如何添加跟随游戏的敌人精灵
4 回答
如何添加路径以便python可以找到程序?
4 回答
如何添加身份验证/安全性以使用happybase访问HBase?
3 回答