Numpy 筛选wav文件时发生值错误

Numpy 筛选wav文件时发生值错误,numpy,scipy,wav,pyaudio,Numpy,Scipy,Wav,Pyaudio,我们目前正在整合三个代码 1.麦克风录音机 2.积分器(低通滤波) 3.应用过滤器 我们遇到了以下错误: fltrd() [[ 0 0] [ -1 0] [ 0 0] ..., [-65 -60] [-31 -52] [-45 -53]] Traceback (most recent call last): File "<ipython-input-2-72cbac6fd2ac>", line 1, in <module> fl

我们目前正在整合三个代码 1.麦克风录音机 2.积分器(低通滤波) 3.应用过滤器

我们遇到了以下错误:

fltrd()
[[  0   0]
 [ -1   0]
 [  0   0]
 ..., 
 [-65 -60]
 [-31 -52]
 [-45 -53]]
Traceback (most recent call last):

  File "<ipython-input-2-72cbac6fd2ac>", line 1, in <module>
    fltrd()

  File "C:/Users/vsecadesang/Desktop/5th year/2nd sem/SIGNLAB/PROJECT/etc/project.py", line 57, in fltrd
    a2 = integ(x)

  File "C:/Users/vsecadesang/Desktop/5th year/2nd sem/SIGNLAB/PROJECT/etc/project.py", line 49, in integ
    y[0] = x[0]

ValueError: setting an array element with a sequence.

您的文件有两个通道,因此对于某些整数
m
,x具有形状
(m,2)
。在函数
integ(x)
中,有
y=np.zero(len(x))
。它创建一个具有形状
(m,)
的数组。然后,行
y[0]=x[0]
尝试将
x[0]
中的两个值复制到单个值
y[0]

要解决此问题,请创建
y
,使其具有与
x
相同的形状:

y = np.zeros(x.shape)
请注意,
np.zeros()
默认情况下创建浮点数组。如果希望
y
具有与
x
相同的数据类型,可以这样做

y = np.zeros_like(x)
还可以显式设置数据类型,因此如果希望
y
为32位浮点:

y = np.zeros(x.shape, dtype=np.float32)
最后,请注意,您的
integ()
函数是
x
沿其第一个轴的累积和,因此可以将其简化为
y=x.cumsum(轴=0)
。也就是说,您可以完全删除函数
integ
,然后替换

a2 = integ(x)


一个潜在的问题是,16位和可能会溢出。如果发生这种情况,而您不知道如何处理,那么,您可以随时在stackoverflow上创建一个关于它的新问题。:)

你能发布输出代码的结果吗?这样我就可以更好地了解应该编辑的内容了?谢谢
a2 = integ(x)
a2 = x.cumsum(axis=0)