元素乘法:常用 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)