我在网上环顾四周,似乎已弃用了 scipy.stats 中的 signaltonoise 比率功能,该功能在1.1版中不可用。 scipy软件包内还有其他等效方法,因为我无法在线找到它。
如果不是scipy,那么是否建议使用其他任何库进行此类计算?
答案 0 :(得分:6)
如scipy issue #609 on github所示,signaltonoise
函数
[...] 除向后兼容外没有用。原因是存在一个Matlab信噪比函数http://www.mathworks.com/help/signal/ref/snr.html,它的含义有所不同。这不好,因为scipy克隆了其他信号相关功能的Matlab接口,这种不兼容显然没有抵消作用。
如果您确实需要此功能以实现向后兼容,则可以在history of scipy repository中找到简短的实现,如下所示(此处复制而没有文档注释,license):
def signaltonoise(a, axis=0, ddof=0):
a = np.asanyarray(a)
m = a.mean(axis)
sd = a.std(axis=axis, ddof=ddof)
return np.where(sd == 0, 0, m/sd)