python 矩阵乘法的几种实现方法

 更新时间:2025年12月05日 08:32:24   作者:JJmaker  
本文详细介绍了Python中矩阵乘法的多种实现方式,包括np.multiply、*、np.matmul和np.dot等函数的使用方法及区别,感兴趣的可以了解一下

1. np.multiply

对 array 和 matrix 对象的操作相同
(1) a 和 b 维度相同
都是每行对应元素相乘(即对应内积的第一步,不求和)

>>> a = np.array([[1,2],[1,2]])
>>> a*a
>>> array([[1, 4],
       [1, 4]])

(2)对于两个矩阵元素 a 和 b 维度不一的情况(array 和 matrix 对象都适用),则需将相应的行和列进行扩充,需要扩充的行或列的维度必须为 1。
对列扩充则补 1, 对行扩充则将第一行复制到每一行。比如,a:3 * 1, b: 1 * 2,则 a 扩充为 3 * 2,b 扩充为 3 * 2。
如下所示:

>>> a = np.array([[1],[1],[1]])
>>> b = np.array([1,2])
>>> np.multiply(a, b)
>>> array([[1, 2],
       [1, 2],
       [1, 2]])

(3)a 和 b为标量:则标量直接相乘

2. *

(1)对于 matrix 对象,代表矩阵乘法(维度必须满足相应规则);
(2)对于array对象,则是每行对应元素相乘。当 array 对象的 shape 不同时(matrix 对象不行) ,其规则和 np.multiply 一样;

3. np.matmul

该函数对 array 和 matrix 对象的操作是不一样的。
(1)对于 matrix 对象,对应矩阵乘法,对象维度必须满足矩阵乘法规则。
(2)对于 array 对象,对应内积,但对象维度必须相同,不支持维度扩展。
(3)不支持标量运算。

在array 中,与 multiply 一样,每行对应元素相乘

4. np.dot

对于matrix 对象,对应矩阵乘法。
对于两个 array 类型的元素:a,b,有如下可能:
(1)a 和 b 都是一维 array,那么 dot 就是它们的内积(点乘);
(2)a 和 b 都是二维 array,那么 dot 就是它们的矩阵乘积(即按矩阵乘法规则来计算),也可以用 matmul 或 a @ b;
(3)如果a 和 b 都是标量(scalar),那么 dot 就是两个数的乘积,也可以用 multiply 或 a * b;
(4)若 a:N * D,b:1 * D,那么 dot 为 a 的每一行和 b (只有一行)的 内积;

>>>a = np.array([[1,2], [3, 4]])
>>>b = np.array([1, 2])
>>>np.dot(a, b)
>>>array([ 5, 11])

到此这篇关于python 矩阵乘法的几种实现方法的文章就介绍到这了,更多相关python 矩阵乘法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用Streamlit快速构建一个数据应用程序

    Python使用Streamlit快速构建一个数据应用程序

    Streamlit是一个开源的Python库,它允许数据科学家和开发人员快速创建和分享数据应用程序,而无需具备复杂的Web开发经验,本文将介绍Streamlit的基本用法,并通过一个实际案例展示如何快速构建一个简单的数据应用程序,需要的朋友可以参考下
    2025-03-03
  • python3 实现一行输入,空格隔开的示例

    python3 实现一行输入,空格隔开的示例

    今天小编就为大家分享一篇python3 实现一行输入,空格隔开的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • django中ImageField的使用详解

    django中ImageField的使用详解

    这篇文章主要介绍了django中ImageField的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 使用Python制作一个数据预处理小工具(多种操作一键完成)

    使用Python制作一个数据预处理小工具(多种操作一键完成)

    这篇文章主要介绍了使用Python制作一个数据预处理小工具(多种操作一键完成),本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python和C/C++交互的几种方法总结

    Python和C/C++交互的几种方法总结

    这篇文章主要给大家总结介绍了Python和C/C++交互的几种方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • 利用Python实现Windows下的鼠标键盘模拟的实例代码

    利用Python实现Windows下的鼠标键盘模拟的实例代码

    本篇文章主要介绍了利用Python实现Windows下的鼠标键盘模拟的实例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-07-07
  • Python设计模式之桥接模式原理与用法实例分析

    Python设计模式之桥接模式原理与用法实例分析

    这篇文章主要介绍了Python设计模式之桥接模式原理与用法,结合具体实例形式分析了Python桥接模式的相关概念、原理、定义及使用方法,需要的朋友可以参考下
    2019-01-01
  • 详解python列表(list)的使用技巧及高级操作

    详解python列表(list)的使用技巧及高级操作

    这篇文章主要介绍了详解python列表(list)的使用技巧及高级操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 用Python的Django框架完成视频处理任务的教程

    用Python的Django框架完成视频处理任务的教程

    这篇文章主要介绍了用Python的Django框架完成视频处理任务的教程,包括用户的视频上传和播放以及下载功能的实现,需要的朋友可以参考下
    2015-04-04
  • python新手经常遇到的17个错误分析

    python新手经常遇到的17个错误分析

    这篇文章主要介绍了python新手经常遇到的17个错误分析,需要的朋友可以参考下
    2014-07-07

最新评论