二维阵列沿单轴的卷积

时间:2018-08-13 13:42:21

标签: arrays performance numpy scipy convolution

比方说,我有单独的二维数组,具有不同的行数:

数组一:

1 2 3
4 5 6
7 8 9

第二个数组:

10 11 12
13 14 15

我想沿零轴对这两个数组进行卷积,输出大小与数组1相同,类似于使用mode ='same'时scipy的卷积方法将输出。

因此,两个数组的第1列被卷积在一起,等等,两个数组的第2列被卷积在一起,等等。我想这样做的方式对于较大的数组(最多100,000行)在计算上是可行的,因此,我尽可能避免使用for循环。 numpy / scipy或任何其他库是否具有执行此操作的任何方法?

所需的输出应如下所示:

10 22 36
53 83 117
122 158 198

具有与第一个输入数组相同的形状。每列都是从数组1和2中对应列的卷积获得的输出。

1 个答案:

答案 0 :(得分:0)

np.convolve的实现只需调用np.core.multiarray.correlate(因为卷积与翻转一个向量后计算相关性相同)。似乎很多人都希望使用一种Numpy方法来计算沿特定轴的相关性,但是还不存在(

):

Apply numpy's correlation to specific axis (autocorrelation)

Compact way of simulating 'axes' parameter in scipy.signal.fftconvolve?

但是,您可以使用循环,看看scipy.signal.fftconvolve是否可以解决您的问题。