其实python的array和matrix的最大区别在于其乘法的实现不同,这里之所以着重说一下,主要是因为在写一个基于强化学习的四旋翼模型时遇到这个问题(RL-DRONE).先说乘法的不同,看下面的一段代码就明白了:
import numpy as np
a = np.array([[1,2,3]])
b = np.array([[1],[2],[3]])
a_new = np.mat([[1,2,3]])
b_new = np.mat([[1],[2],[3]])
c = a*b
c_new = a_new*b_new
print('数组乘法:a*b=\n',c)
print('矩阵乘法 a*b= ',c_new)
运行结果如下:
数组乘法:a*b=
[[1 2 3]
[2 4 6]
[3 6 9]]
矩阵乘法 a*b= [[14]]
这里就可以看出,array的乘法是每个元素的相乘.这个是很好理解的,下面我们再看二者的第一行元素有什么不同:
import numpy as np
a = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
b = np.mat([[1,2,3],
[4,5,6],
[7,8,9]])
print('数组的第一行元素: ',a[0,:])
print('矩阵的第一行元数: ',b[0,:])
输出结果如下:
/home/fc/PycharmProjects/fc/venv/bin/python /home/fc/桌面/四旋翼建模/Quadcopter_simulator-master/test.py
数组的第一行元素: [1 2 3]
矩阵的第一行元数: [[1 2 3]]
Process finished with exit code