Python 中数组、矩阵和元素乘法区别(dot、multiply等)

您所在的位置:网站首页 矩阵的数乘法则 Python 中数组、矩阵和元素乘法区别(dot、multiply等)

Python 中数组、矩阵和元素乘法区别(dot、multiply等)

2024-04-11 09:34| 来源: 网络整理| 查看: 265

元素乘法:常用 a*b 或 np.multiply(a,b) 完成元素乘法,即对应元素相乘

矩阵乘法:常用np.dot(a,b) 或 a.dot(b)或 np.matmul(a,b) 或a@b或a*b(ab为矩阵)完成,查看                  矩阵乘法

特别注意: *  在 np.array (数组)中为元素乘法(对应元素相乘),在 np.matrix(矩阵中)中为矩阵乘法!

如果不理解没关系,看下下面的例子你应该会秒懂。

元素乘法

可以用 a*b 或 np.multiply(a,b) 完成元素乘法。

表示a*b,如2*3=6;这种情况比较简单,相信你看下下面的代码就秒懂。

import numpy as np a = 2 b = 3 print('np.multiply(a,b)的结果为:', np.multiply(a, b)) 输出结果: np.multiply(a,b)的结果为: 6 矩阵乘法

常用np.dot(a,b) 或 a.dot(b)或 np.matmul(a,b) 完成。矩阵乘法就是线性代数所学的矩阵乘法,忘了的话可以复习下,查看矩阵乘法。注意: *  在 np.array 中为元素乘法,在 np.matrix 中为矩阵乘法!

                如果还不理解,先看下下面的例子你会秒懂。

import numpy as np a = np.arange(1, 5).reshape(2, 2) # 生成一维数组并1-4,并重构为2*2的数组 b = np.arange(1, 5).reshape(2, 2) # 生成一维数组并1-4,并重构为2*2的数组 print('这是上面生成的数组a:\n', a) # 输出数组a,看下它长什么样 print('这是上面生成的数组b:\n', b) # 输出数组b,看下它长什么样 # 当a,b为数组,执行*运算(此时为元素乘法) print('当a和b为数组时a*b的结果为:\n', a * b) # 将a,b转化为矩阵后,再执行*运算(此时为矩阵乘法),你就会发现与上面的区别 a = np.matrix(a) # 将b转化为矩阵 b = np.matrix(b) # 将b转化为矩阵 print('当a和b为矩阵时a*b的结果为:\n', a * b) 输出结果如下: 这是上面生成的数组a: [[1 2] [3 4]] 这是上面生成的数组b: [[1 2] [3 4]] 当a和b为数组时a*b的结果为(a和b按对应元素相乘): [[ 1 4] [ 9 16]] 当a和b为矩阵时a*b的结果为(a和b按矩阵乘法相乘): [[ 7 10] [15 22]]

因此,在使用*运算要特别注意,在 np.array(数组) 中为对应元素相乘,在 np.matrix(矩  阵) 中为矩阵乘法!

附测试代码: import numpy as np a = np.arange(1, 5).reshape(2, 2) # 生成一维数组并1-4,并重构为2*2的数组 b = np.arange(1, 5).reshape(2, 2) # 生成一维数组并1-4,并重构为2*2的数组 print('这是上面生成的数组a:\n', a) # 输出数组a,看下它长什么样 print('这是上面生成的数组b:\n', b) # 输出数组b,看下它长什么样 # 当a,b为数组,执行*运算(此时为元素乘法) print('当a和b为数组时a*b的结果为:\n', a * b) # 将a,b转化为矩阵后,再执行*运算(此时为矩阵乘法),你就会发现与上面的区别 a = np.matrix(a) # 将a转化为矩阵 b = np.matrix(b) # 将b转化为矩阵 print('当a和b为矩阵时a*b的结果为:\n', a * b)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3