我只是有一个关于数据减少的快速问题。我有大约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的范围内。稍后的想法是将它们相互叠加并确定它们是否是镜像对立面。对不起,感到困惑。答案 0 :(得分:0)
你想要
FWHM <= 5000 and (-1500 <= mean <= 1500)
如果平均值介于-1600和-1500之间或介于1500和1600之间但不是-1500到1500之间的任何位置,那么你的if结构将是真的,这正是你想要的,即它永远不会工作=)。
答案 1 :(得分: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 = ''
编辑以添加诊断打印语句