python multiply()与dot使用示例讲解
坤坤子的世界 人气:0首先创建如下的数组和矩阵,其中a,b为数组,A,B为矩阵
import numpy as np a = np.arange(1,5).reshape(2,2) type(a) Out[3]: numpy.ndarray b = np.arange(0,4).reshape(2,2) type(b) Out[5]: numpy.ndarray A = np.mat(a) type(A) Out[7]: numpy.matrix B = np.mat(b) type(B) Out[9]: numpy.matrix
下面列出数组和矩阵使用multiply()和dot以及*计算的结果,计算场景有点多,这里先给出multiply()、dot以及*之间的区别:
1 * 运算符:当参与计算的类型都为数组时,计算方式为:对应位置相乘,当其中一个类型为矩阵时,则采用矩阵乘法。
2 dot运算符:无论参与计算的是数组还是矩阵,计算方式都为:矩阵乘法,
3 multiply()运算符:无论参与计算的是数组还是矩阵,计算方式都为:对应位置相乘。
数组*数组
a Out[11]: array([[1, 2], [3, 4]]) b Out[12]: array([[0, 1], [2, 3]]) a * b Out[13]: array([[ 0, 2], [ 6, 12]])
矩阵*矩阵
A Out[14]: matrix([[1, 2], [3, 4]]) B Out[15]: matrix([[0, 1], [2, 3]]) A*B Out[16]: matrix([[ 4, 7], [ 8, 15]])
数组dot数组
a Out[18]: array([[1, 2], [3, 4]]) b Out[19]: array([[0, 1], [2, 3]]) a.dot(b) Out[20]: array([[ 4, 7], [ 8, 15]])
矩阵dot矩阵
A Out[14]: matrix([[1, 2], [3, 4]]) B Out[15]: matrix([[0, 1], [2, 3]]) Out[21]: matrix([[ 4, 7], [ 8, 15]])
数组multiply数组
a Out[22]: array([[1, 2], [3, 4]]) b Out[23]: array([[0, 1], [2, 3]]) np.multiply(a,b) Out[24]: array([[ 0, 2], [ 6, 12]])
矩阵multiply矩阵
A Out[25]: matrix([[1, 2], [3, 4]]) B Out[26]: matrix([[0, 1], [2, 3]]) np.multiply(A,B) Out[27]: matrix([[ 0, 2], [ 6, 12]])
数组*矩阵
a Out[29]: array([[1, 2], [3, 4]]) B Out[30]: matrix([[0, 1], [2, 3]]) a * B Out[31]: matrix([[ 4, 7], [ 8, 15]])
矩阵*数组
a Out[29]: array([[1, 2], [3, 4]]) B Out[30]: matrix([[0, 1], [2, 3]]) a * B Out[31]: matrix([[ 4, 7], [ 8, 15]])
数组dot矩阵
a Out[35]: array([[1, 2], [3, 4]]) B Out[36]: matrix([[0, 1], [2, 3]]) a.dot(B) Out[37]: matrix([[ 4, 7], [ 8, 15]])
矩阵dot数组
A Out[38]: matrix([[1, 2], [3, 4]]) b Out[39]: array([[0, 1], [2, 3]]) A.dot(b) Out[40]: matrix([[ 4, 7], [ 8, 15]])
数组multiply矩阵
a Out[41]: array([[1, 2], [3, 4]]) B Out[42]: matrix([[0, 1], [2, 3]]) np.multiply(a,B) Out[43]: matrix([[ 0, 2], [ 6, 12]])
矩阵multiply数组
A Out[44]: matrix([[1, 2], [3, 4]]) b Out[45]: array([[0, 1], [2, 3]]) np.multiply(A,b) Out[46]: matrix([[ 0, 2], [ 6, 12]])
总结:
1 * 运算符:当参与计算的类型都为数组时,计算方式为:对应位置相乘,当其中一个类型为矩阵时,则采用矩阵乘法。
2 dot运算符:无论参与计算的是数组还是矩阵,计算方式都为:矩阵乘法,
3 multiply()运算符:无论参与计算的是数组还是矩阵,计算方式都为:对应位置相乘。
数组使用*运算符时,其计算方式为对应的位置相乘,当想使用数组进行矩阵乘法时,可以使用dot实现,而矩阵使用*运算符时,其计算方式矩阵相乘,当想使用矩阵进行对应位置相乘时,可以使用multiply实现。可见 dot运算符负责数组/矩阵的矩阵乘法,multiply负责矩阵/数组的对应位置相乘。
加载全部内容