我正在尝试这样做:
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
视为一维数组。
我正在尝试这样做:
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
视为一维数组。
屏幕截图中的Y
数组不是一维数组,它是一个具有 300 行和 1 列的二维数组,如它所指示的shape
那样(300, 1)
。
要删除额外的维度,您可以将数组切片为Y[:, 0]
. 通常要将 n 维数组转换为一维数组,您可以使用np.reshape(a, a.size)
.
将 2D 数组转换为 1D 的另一种选择是flatten()
function from numpy.ndarray
module,不同之处在于它会复制数组。
np.convolve()
采用一维数组。您需要检查输入并将其转换为一维。
您可以使用np.ravel()
, 将数组转换为一维。
您可以尝试使用scipy.ndimage.convolve
它允许多维图像的卷积。这是文档
np.convolve
需要一个扁平数组作为它的输入之一,你可以使用numpy.ndarray.flatten()
它非常快,在这里找到它。