您好我正在尝试这样做:
h =[0.2,0.2,0.2,0.2,0.2];
Y = np.convolve(Y, h, "same")
Y看起来像这样:
执行此操作时,我收到此错误:
ValueError:对象太深,不适合所需的数组
为什么会这样?
我的猜测是因为某种程度上,卷积函数不会将Y视为一维数组。
答案 0 :(得分:45)
屏幕截图中的Y
数组不是一维数组,它是一个包含300行和1列的二维数组,正如shape
为(300, 1)
所示。
要将其转换为1D数组,请将其切片为Y[:, 0]
或使用np.reshape(a, len(a))
重新整形。
将2D数组转换为1D的替代方法是来自flatten()
模块的numpy.ndarray
函数,不同之处在于它创建了数组的副本。
答案 1 :(得分:7)
np.convolve()
采用一维数组。您需要检查输入并将其转换为1D。
您可以使用np.ravel()
将数组转换为一维。
答案 2 :(得分:0)
np.convolve
需要一个展平的数组作为其中一个输入,您可以使用numpy.ndarray.flatten()
这是非常快的,找到它here。
答案 3 :(得分:0)
您可以尝试使用scipy.ndimage.convolve
,它可以对多维图像进行卷积。 here是文档