【发布时间】:2019-01-20 06:30:18
【问题描述】:
假设我有不同行数的单独二维数组:
数组一:
1 2 3
4 5 6
7 8 9
数组二:
10 11 12
13 14 15
我想将这两个数组沿零轴一起执行卷积,输出大小与数组 1 相同,类似于使用 mode='same' 时 scipy 的 convolve 方法将输出的内容。
所以两个数组的第 1 列被卷积在一起,等等,两个数组的第 2 列被卷积在一起,等等。我想以一种对于更大的数组(超过 100,000 行)计算上可行的方式来做到这一点,所以如果可能的话,我想避免使用 for 循环。 numpy/scipy 或任何其他库是否有执行此操作的任何方法?
所需的输出应如下所示:
10 22 36
53 83 117
122 158 198
与第一个输入数组的形状相同。每一列都是数组1和2中对应列的卷积得到的输出。
【问题讨论】:
-
你能发布你想要的这个小样本的输出吗?
-
当然——我更新了开头的帖子以包含输出的样子。
-
如果您有 100,000 行,则解释循环的开销几乎为零。只有当卷积本身很小(例如 20 行)但有 100,000 列时,解释循环才会成为问题。
-
我不认为我有那么大的东西,但卷积的总列数可以从 4 到 30,000 不等,具体取决于具体情况。
标签: arrays performance numpy scipy convolution