ValueError:使用卷积时对象太深,无法使用所需的数组

时间:2013-04-10 10:17:52

标签: python numpy

您好我正在尝试这样做:

h =[0.2,0.2,0.2,0.2,0.2];

Y = np.convolve(Y, h, "same")

Y看起来像这样:

screenshot

执行此操作时,我收到此错误:

  

ValueError:对象太深,不适合所需的数组

为什么会这样?

我的猜测是因为某种程度上,卷积函数不会将Y视为一维数组。

4 个答案:

答案 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是文档