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

无需for循环:用Numpy实现矩阵批量乘向量数组

如何高效实现N个二维向量与2x2矩阵的批量相乘

你可以利用NumPy的向量化矩阵乘法替代循环,这会大幅提升计算效率,尤其是当N值较大时。以下是几种简洁高效的实现方式:

方法1:使用np.dot(最常用)

直接对矩阵和数组X执行点积运算,NumPy会自动处理批量维度:

import numpy as np

matrix = np.array([
    [0,  1],
    [0, -1]
])

X = np.array([
    [0, 0],
    [1, 1],
    [2, 2]
])

# 批量计算矩阵与每个向量的乘积
Y = np.dot(matrix, X.T).T  # 等价循环中的逐个dot操作
# 也可写成 Y = X @ matrix.T,结果完全一致

方法2:使用@运算符(Python 3.5+支持)

@是NumPy原生的矩阵乘法运算符,语法更直观:

Y = (matrix @ X.T).T
# 或更简洁的写法:Y = X @ matrix.T

方法3:使用np.matmul

np.matmul专为矩阵乘法设计,天然支持批量操作:

Y = np.matmul(matrix, X.T).T
# 等价写法:Y = np.matmul(X, matrix.T)

验证结果

以上三种方法得到的Y均与预期一致:

print(Y)
# 输出:
# [[ 0  0]
#  [ 1 -1]
#  [ 2 -2]]

性能说明

NumPy的向量化操作基于底层C实现,避免了Python循环的额外开销,当N达到上万甚至更大规模时,性能差距会非常显著。

内容的提问来源于stack exchange,提问作者johnny rotten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:55:23