登录
首页 >  文章 >  python教程

Pythonnumpy.matmul矩阵相乘详解

时间:2025-11-02 18:40:29 176浏览 收藏

想要掌握Python中的矩阵运算?NumPy库的`numpy.matmul`函数是你的得力助手!本教程深入解析`matmul`的用法,它专门用于执行矩阵乘法,确保左矩阵的列数与右矩阵的行数匹配。`matmul`不仅支持二维数组的矩阵相乘,还能处理多维数组,沿着最后两个维度进行矩阵运算,并广播其他维度。与逐元素相乘的`*`和高维行为不同的`np.dot`相比,`matmul`更符合线性代数的规则,是进行精确矩阵运算的首选,它等价于Python中的`@`操作符。掌握`matmul`,让你在科学计算和机器学习中轻松实现线性变换和神经网络层计算。

numpy.matmul用于执行矩阵乘法,要求左矩阵列数等于右矩阵行数,支持多维数组按最后两维进行矩阵乘法并广播其余维度,与*(逐元素相乘)和np.dot(高维行为不同)有区别,推荐用于明确的矩阵运算,等价于@操作符。

python numpy.matmul实现矩阵相乘

在 Python 中,numpy.matmul 是 NumPy 提供的用于执行矩阵乘法的函数。它专为线性代数中的矩阵相乘设计,比普通的数组乘法(如 *)更符合数学意义上的矩阵乘法。

matmul 基本用法

numpy.matmul(A, B) 计算两个数组 A 和 B 的矩阵乘积。要求 A 的列数等于 B 的行数。

示例:

import numpy as np

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

C = np.matmul(A, B)
print(C)
# 输出:
# [[19 22]
# [43 50]]

支持多维数组

当输入是三维或更高维数组时,matmul 沿最后两个轴进行矩阵乘法,广播其余维度。

例如,两个形状为 (2, 3, 4) 和 (2, 4, 5) 的数组可以相乘,结果为 (2, 3, 5)。

A = np.random.rand(2, 3, 4)
B = np.random.rand(2, 4, 5)
C = np.matmul(A, B)
print(C.shape) # (2, 3, 5)

与 '*' 和 dot 的区别

注意以下几点避免混淆:

  • * 表示逐元素乘法(对应位置相乘),不是矩阵乘法
  • np.dot 在二维情况下类似 matmul,但在高维行为略有不同,且对向量处理更灵活
  • matmul 更严格遵循线性代数规则,不支持标量,推荐用于明确的矩阵乘法

常见使用建议

实际使用中注意:

  • 确保参与乘法的最后两个维度满足矩阵乘法条件:(m, k) × (k, n)
  • 如果需要将一维数组视为行/列向量,注意其形状影响结果
  • 对于二维数组,np.matmul(A, B) 等价于 A @ B,@ 是 Python 的矩阵乘法操作符

基本上就这些。掌握 matmul 能帮助你在科学计算和机器学习中正确实现线性变换、神经网络层计算等任务。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>