我写了一个简单的函数来使用numpy对我的光谱进行基线减法。代码如下所示:
import numpy as np
def bas_sub(baseline_y, spectrum_y):
try:
len(baseline_y)==len(spectrum_y)
spectrum_new = np.copy(spectrum_y)-baseline_y
return spectrum_new
except:
print 'Baseline and spectrum shoud have the same length.'
其中基线和光谱是两个1D numpy阵列。我希望我的功能是一个简单的长度检查,即如果基线和光谱有不同的长度,函数应该打印消息:'基线和光谱应该具有相同的长度'。该功能适用于相同长度的输入但是在打印具有不同长度的输入的消息时失败。在最后一种情况下,函数输出是NoneType对象。我做错了什么? 谢谢
答案 0 :(得分:1)
除了阻止之外,没有任何东西会抛出异常被捕获。
异常处理不是正确的模式。你应该只使用if / else语句:
def bas_sub(baseline_y, spectrum_y):
if len(baseline_y) == len(spectrum_y):
spectrum_new = np.copy(spectrum_y) - baseline_y
return spectrum_new
else:
print 'Baseline and spectrum shoud have the same length.'
答案 1 :(得分:0)
另一种方法是使用断言:
import numpy as np
def bas_sub(baseline_y, spectrum_y):
assert len(baseline_y)==len(spectrum_y), "Baseline and spectrum shoud have the same length."
spectrum_new = np.copy(spectrum_y)-baseline_y
return spectrum_new