You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

两个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:24:05