现在我有一个numpy 2D数组,并希望使用2D内核进行卷积。我试过用numpy。卷积和输出是:
ValueError:对象对于所需数组太深
尝试信号时。卷积效果很好。
那么有没有办法修复np呢?convolve??
并且是信号的结果。卷积将与np相同。卷积?
下面是我简单代码:
import numpy as np
from scipy import signal
a=np.array([[1,2,3],[4,5,6]])
b=np.array([[1,1],[1,1]])
A=np.convolve(a,b,'same')
out:ValueError: object too deep for desired array
B=signal.convolve(a,b,'same')
Out[53]:
array([[ 1, 3, 5],
[ 5, 12, 16]])
1条答案
按热度按时间31moq8wy1#
numpy.convolve设计用于一维数组,并不意味着直接用于二维数组。但是,您可以使用numpy。convolve分别对2D阵列的每行和列执行卷积,这有效地导致2D卷积。
下面是一个如何使用numpy执行2D卷积的示例。卷积:
请注意,这种方法可能不如使用scipy有效。signal.convolve2d,特别是对于较大的数组和内核,但它提供了一种仅使用numpy的替代方法。