0

我只是有一个关于数据缩减的快速问题。我有大约 1500 个文件,我想删除不符合特定条件的文件。

基本上我将高斯拟合到数据集,这给了我一个平均值和一个全宽半最大值。我只想选择曲线的平均值约为 +/- 1500 且半高全宽小于 5000 的文件。

我打算使用 if 条件,但事实证明它比我最初想象的要困难。

到目前为止我所拥有的:

if FWHM <= 5000 and (-1600 <= mean <= -1500):
   return (send data to plotting function)
elif FWHM <= 5000 and (1500 <= mean <= 1600):
   return (send data to plotting function)
else:
   os.remove(os.path.join(path, f))

这似乎不起作用,我认为这可能也不是最好的方法。

有小费吗?非常感激。

编辑:对不起,我应该澄清一下。我想要包含平均值在 -1600 到 -1500 或 1500 到 1600 范围内的文件。稍后的想法是将它们相互叠加并确定它们是否是镜像对立的。对困惑感到抱歉。

4

2 回答 2

0

您可以使用 abs() 进行简化,减少语句可能有助于诊断。也许打印出所有也被删除的好文件 - 以确保正在发生的事情就是您认为正在发生的事情。

if FWHM <= 5000 and (1500 <= abs(mean) <= 1600):
   true_file = os.path.join(path, f)
   return (send data to plotting function)
else:
   if true_file == os.path.join(path, f):
       print 'I am deleting a GOOD file:', true_file
   os.remove(os.path.join(path, f))
   true_file = ''

编辑以添加诊断打印语句

于 2013-10-04T04:14:09.297 回答
0

你要

FWHM <= 5000 and (-1500 <= mean <= 1500)

如果平均值在 -1600 和 -1500 之间或 1500 和 1600 之间但不是在 -1500 到 1500 之间的任何地方,这正是你想要的,你的 if 结构才会是真的,即它永远不会工作=)。

于 2013-10-04T03:06:44.973 回答