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

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

你可能感兴趣的:(python)