在学习线性代数时我们所接触的矩阵之间的乘法是矩阵的叉乘,有这样一个前提:
若矩阵A是m*n阶的,B是p*q阶的矩阵,AB能相乘,首先得满足:n=p,即A的列数要等于B的行数。运算的方法如下图:
当时学线性代数时老师教的更为直观记法:
点乘则是这样:
假如有a,b两个矩阵,在Matlab中我们实现点乘和叉乘的方式分别如下:
1
2
|
a. * b % 表示点乘 a * b % 表示叉乘 |
下面我们来看看python中的操作:
1
2
3
4
5
6
7
8
9
10
11
12
|
import numpy as np a = np.arange( 1 , 10 ).reshape( 3 , 3 ) b = np.arange( 1 , 10 ).reshape( 3 , 3 ) print (a) print (a * b) # 点乘只允许1*m和m*n a1 = np.mat(np.arange( 1 , 10 ).reshape( 3 , 3 )) a2 = np.mat(np.arange( 1 , 10 ).reshape( 3 , 3 )) a3 = np.dot(a1, a2) # 叉乘使用dot print (a1) print (a3) |
运行结果:
使用python
操作刚好与Matlab
相反,使用点乘计算实际上是各数组相同下标相乘。Numpy库中的dot函数则是为了实现数组相乘。
到此这篇关于Python中的Numpy 矩阵运算的文章就介绍到这了,更多相关Python Numpy 矩阵运算内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://zhuanlan.zhihu.com/p/113863268