abs()的坏操作数类型:'list'

Jua*_*rez 2 python numpy

当计算数组的每个值的绝对值时,我得到与abs()的错误操作数类型相关的错误:'list'.下一步是源代码失败的部分:

x = amplitudex * sin((2 * pi * (frequency * 1) * t) + phase);
y = amplitudey * sin((2 * pi * (frequency * 2) * t) + phase);
z = amplitudez * sin((2 * pi * (frequency * 3) * t) + phase);

w=  0.55* (x + y + z);
....
n = len(w);
wf = [float(0)] * n;
for k in range(n):  # For each output element
    s = float(0);
    for t in range(n):  # For each input element
        s += w[t] * cmath.exp(-2j * cmath.pi * t * k / n);
    wf[k] = float(s);

sf = np.linspace(0.0, 1.0/(2.0*numCycles), numSamples/2);

#The calculation of absolute values causes error:
plot(sf, 2.0/numSamples * abs(wf[0:100]));
Run Code Online (Sandbox Code Playgroud)

如何在abs函数中修复此错误?我对此错误感到困惑:(

谢谢

wim*_*wim 6

我看到你已经导入了numpy因为你np.linspace在代码中使用了.你可能会混淆numpy的abs,它很__builtin__.abs适合列表和数组,只适用于标量.

改变这个:

abs(wf[0:100])
Run Code Online (Sandbox Code Playgroud)

对此:

np.abs(wf[0:100])
Run Code Online (Sandbox Code Playgroud)