Numpy 矩阵乘法,很多数据分析工具中,*
在用于两个矩阵之间的运算时称为矩阵乘法,Numpy使用dot()
函数表示这类乘法,注意,它并非元素级乘法。
极客教程NumPy 线性代数有提到dot()
函数的使用,矩阵乘法运用比较广泛,本章再详细说明下。
算术运算
数组的第一类运算是使用算术运算符进行的运算,最简单的方式就是数组加上或乘以一个标量。这种运算符称为元素级,它们只用于位置相同的元素之间,所得到的运算结果组成一个新的数组。运算结果在新数组中的位置和操作数组位置相同。
import numpy as np
a = np.arange(4)
b = np.arange(4,8)
print(a)
print(b)
print(a+b)
print(a*b)
输出结果如下:
对于多维数组,这些运算依旧是元素级的
import numpy as np
A = np.arange(0,9).reshape(3,3)
B = np.ones((3,3))
print(A)
print('------------')
print(B)
print('------------')
print(A * B)
输出结果如下:
矩阵乘法
Numpy使用dot()
函数实现矩阵乘法,如下所示:
import numpy as np
A = np.arange(0,9).reshape(3,3)
B = np.ones((3,3))
print(A)
print('------------')
print(B)
print('------------')
print(np.dot(A, B))
输出结果如下:
所得到的数组中每个元素为,第一个矩阵中与该元素行号相同的元素与第二个矩阵中与该元素列号相同的元素,两两相乘后再求和,如下图所示:
矩阵相乘的另外一种写法是把dot()
函数当作其中一个矩阵对象的方法,如下所示:
import numpy as np
A = np.arange(0,9).reshape(3,3)
B = np.ones((3,3))
print(A.dot(B))
输出结果如下:
矩阵计算不遵循交换律,这里补充一下,运算对象的顺序很重要。A*B
不等于B*A
,如下所示:
import numpy as np
A = np.arange(0,9).reshape(3,3)
B = np.ones((3,3))
print(B.dot(A))
输出结果:
更多矩阵操作,请参考:
极客教程Numpy 数组操作
极客教程NumPy 统计函数
极客教程NumPy 线性代数