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

如何在NumPy数组中为每个三维向量乘矩阵(无循环)

问题描述

我有如下NumPy数组:

to_multiply = np.array([[[1,2,3], [2,3,4], [5,6,7]]])

我希望将三维数组中的所有向量与一个矩阵相乘,请问如何不使用for循环实现该操作?

使用for循环的实现方式如下:

for x in range(1):
    for y in range(2):
        to_multiply[y, x] @= matrix
解决方案

可以利用NumPy的广播机制和矩阵乘法的维度匹配特性直接实现,无需显式循环:

核心要求

确保to_multiply的最后一维长度(即向量长度)等于目标矩阵的倒数第二维长度(即矩阵行数),这样才能满足矩阵乘法的维度兼容规则。

具体实现

假设你的matrix是形状为(3, N)的矩阵(比如常用的(3,3)方阵),直接执行以下代码即可:

# 方法1:使用@运算符(语法简洁,推荐)
result = to_multiply @ matrix

# 方法2:使用np.matmul,效果与@完全一致
result = np.matmul(to_multiply, matrix)

维度说明

原数组to_multiply的形状是(1, 3, 3),当matrix为(3,3)时,NumPy会自动将matrix广播为(1, 3, 3)的形状,然后对每个对应位置的向量和矩阵做乘法运算,最终输出结果的形状为(1, 3, N)(N为矩阵的列数),和原数组的结构保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:55:22