两个2D Numpy数组沿axis=1卷积,np.convolve无axis参数求简单实现方案
实现方案
你需要的是对两个2D数组的对应行分别做1D卷积,下面是两种简洁的实现方式:
方法1:纯NumPy实现(无额外依赖)
直接逐行调用np.convolve后堆叠结果,代码简单易读,满足常规使用需求:
import numpy as np # 示例数据 a = np.array([[4, 2, 0, 4, 3], [2, 2, 2, 3, 1]]) b = np.array([[4, 3], [4, 0]]) # 核心实现,默认mode='full'和示例输出匹配 c = np.vstack([np.convolve(a_row, b_row) for a_row, b_row in zip(a, b)])
运行后输出和你给出的预期完全一致:
[[16 20 6 16 24 9] [ 8 8 8 12 4 0]]
如果需要调整卷积模式,直接在np.convolve中传入mode参数(可选值'full'/'same'/'valid')即可。
方法2:高效向量化实现(适合大数组场景)
如果处理的数组行数多、数据量大,可以使用scipy.signal.convolve1d,该函数原生支持axis参数,性能更优:
from scipy.signal import convolve1d c = convolve1d(a, b, axis=1, mode='full')
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

