53

我正在尝试这样做:

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

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

Y看起来像这样:

截屏

这样做时,我收到此错误:

ValueError: object too deep for desired array

为什么是这样?

我的猜测是因为不知何故该convolve函数不会被Y视为一维数组。

4

4 回答 4

72

屏幕截图中的Y数组不是一维数组,它是一个具有 300 行和 1 列的二维数组,如它所指示的shape那样(300, 1)

要删除额外的维度,您可以将数组切片为Y[:, 0]. 通常要将 n 维数组转换为一维数组,您可以使用np.reshape(a, a.size).

将 2D 数组转换为 1D 的另一种选择是flatten()function from numpy.ndarraymodule,不同之处在于它会复制数组。

于 2013-04-10T10:23:33.470 回答
10

np.convolve()采用一维数组。您需要检查输入并将其转换为一维。

您可以使用np.ravel(), 将数组转换为一维。

于 2017-06-19T19:23:54.210 回答
3

您可以尝试使用scipy.ndimage.convolve它允许多维图像的卷积。是文档

于 2019-01-11T08:11:56.407 回答
2

np.convolve需要一个扁平数组作为它的输入之一,你可以使用numpy.ndarray.flatten()它非常快,在这里找到它。

于 2018-06-09T10:19:53.077 回答