专栏首页Python小屋详解Python中的算术乘法、数组乘法与矩阵乘法

详解Python中的算术乘法、数组乘法与矩阵乘法

(1)算术乘法,整数、实数、复数、高精度实数之间的乘法。

(2)列表、元组、字符串这几种类型的对象与整数之间的乘法,表示对列表、元组或字符串进行重复,返回新列表、元组、字符串。

需要特别注意的是,列表、元组、字符串与整数相乘,是对其中的元素的引用进行复用,如果元组或列表中的元素是列表、字典、集合这样的可变对象,得到的新对象与原对象之间会互相干扰。

(3)numpy数组与数字num相乘,表示原数组中每个数字与num相乘,返回新数组,类似的规则也适用于加、减、真除、整除、幂运算等。

(4)numpy数组与类似于数组的对象(array-like,包括Python列表、元组和numpy数组)相乘(同样适用于加、减、真除、整除和幂运算),需要满足广播的条件:两个数组的shape属性的元组右对齐之后要求两个元组在垂直方向的两个数字要么相等、要么其中一个为1、要么其中一个对应位置上没有数字(没有对应的维度),结果数组中该维度的大小与二者之中最大的一个相等。在(3)中介绍的数组与标量的四则运算实际上也属于广播。例如,(m,n)的数组可以和(1,)、(n,)、(1,n)、(m,1)、(m,n)的数组进行相乘。

下面再演示几种可以广播的情况:

(5)numpy数组与array-like对象的点积,通过numpy数组的dot()方法或numpy的dot()函数实现。

数组与标量相乘,等价于乘法运算符或numpy.multiply()函数:

如果两个数组是长度相同的一维数组,计算结果为两个向量的内积:

如果两个数组是形状分别为(m,n)和(n,)的二维数组和一维数组,计算结果为二维数组每行分别与一维数组的内积组成的数组:

如果一个任意多维数组和一个一维数组(要求大小与多维数组最后一个维度相等)相乘,多维数组的最后一个维度分别与一维数组计算内积,计算内积的维度消失:

如果两个数组是形状分别为(m,k)和(k,n)的二维数组,表示两个矩阵相乘,结果为(m,n)的二维数组,此时一般使用等价的矩阵乘法运算符@或者numpy的函数matmul():

如果一个n维数组和一个m(>=2)维数组进行dot()运算,第一个数组的最后一个维度与第二个数组的倒数第二个维度计算内积。

在这种情况下,第一个数组的最后一个维度和第二个数组的倒数第二个维度将会消失,如下图所示,划红线的维度消失:

6)numpy矩阵与矩阵相乘时,运算符*和@功能相同,都表示线性代数里的矩阵乘法。

7)连乘,计算所有数值相乘的结果,可以使用标准库函数math.prod(),Python 3.8之后支持。

扩展库函数numpy.prod()提供了更强大的功能。

8)累乘,每个数字与前面的所有数字相乘,可以使用扩展库函数numpy.cumprod()

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python|详解矩阵乘法

    矩阵相信大家都知道,是线性代数中的知识,就是一系列数集。顾名思义,数字组成的矩形,例如:

    算法与编程之美
  • Python numpy tensorflow 中的 点乘 和 矩阵乘法

    若 w 为 m*1 的矩阵,x 为 m*n 的矩阵,那么通过点乘结果就会得到一个 m*n 的矩阵。

    xuyaowen
  • 矩阵乘法的Strassen算法+动态规划算法(矩阵链相乘和硬币问题)

    矩阵乘法的Strassen ---- 这个算法就是在矩阵乘法中采用分治法,能够有效的提高算法的效率。 先来看看咱们在高等代数中学的普通矩阵的乘法 ? 两个矩阵相...

    张俊怡
  • 对矩阵乘法的深入理解

    本文是对《机器学习数学基础》第2章2.1.5节矩阵乘法内容的补充和扩展。通过本节内容,在原书简要介绍矩阵乘法的基础上,能够更全面、深入理解矩阵乘法的含义。

    老齐
  • 疯子的算法总结(五) 矩阵乘法 (矩阵快速幂)

    学过线性代数的都知道矩阵的乘法,矩阵乘法条件第为一个矩阵的行数等与第二个矩阵的列数,乘法为第一个矩阵的第一行乘以第二个矩阵的第一列的对应元素的和作为结果矩阵的第...

    风骨散人Chiam
  • 【Python环境】Python Numpy数组及矩阵线性运算

    numpy中数组的运算基本分为数组与标量的运算和数组之间的运算(线性运算)。 一、数组和标量之间的运算 数组与标量之间的运算采用的是矢量化运算,它可...

    陆勤_数据人网
  • 稀疏矩阵计算器(三元组实现矩阵加减乘法)

    稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储(只存储非零元)和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。

    glm233
  • Python环境下的8种简单线性回归算法

    机器之心
  • Fortran如何实现矩阵与向量的乘法运算

    矩阵是二维数组,而向量是一维数组,内置函数matmul不能实现矩阵与向量的乘法运算。在这一点Fortran不如matlab灵活。

    fem178

扫码关注云+社区

领取腾讯云代金券