也许这个问题应该严格地针对scipy用户,但我也会在这里尝试。在
这是我最近发现的一些东西,让我很好奇。在
我想定义一个标量,我称之为净绝对质量平衡误差,简称为NAMBE。
这个NAMBE是一个基向量和另一个向量之间的绝对差,除以基向量再乘以100,用伪码表示:NAMBE=sum(abs(a-b)/a)*100
当我用python编写代码时,我决定将这行代码分成两行,这样代码就更多了
可读性:
^{pr2}$
我想纽比会做所有的元素,所以如果我做一行,我注意到结果是不同的:>>> s=np.sum(abs(a-b)/a)
>>> s
5.0
现在,如果我用倍频程检查自己,我会得到不同的结果:octave:1> a=[0.1,0.1,0.1,0.1,0.1]
a =
0.10000 0.10000 0.10000 0.10000 0.10000
octave:2> b=a*2
b =
0.20000 0.20000 0.20000 0.20000 0.20000
octave:3> sum(a)
ans = 0.50000
octave:4> sum(b)
ans = 1
octave:5> sum(a-b)
ans = -0.50000
octave:6> sum(abs(a-b))
ans = 0.50000
octave:7> s=sum(abs(a-b))
s = 0.50000
octave:8> s/sum(a)
ans = 1
octave:9> s=sum(abs(a-b)/a)
s = 1.0000
octave:10> s=sum(abs(a-b)/sum(a))
s = 1
请注意,虽然在Python中,9和10在倍频程中的输出没有区别。。。
所以,我的问题是:
为什么python会这样?哪一个是对的?八度音阶还是Python?在