导入方式
import numpy as np
np.dot()函数
①向量点积
np.dot(a, b), 其中a为一维的向量,b为一维的向量,当然这里a和b都是 np.ndarray 类型的, 此时因为是一维的,所以是向量点积。
import numpy as np
a = np.array([1, 2, 3, 4, 5]) # 5行*1列, (5,)
b = np.array([6, 7, 8, 9, 10]) # 5行*1列, (5,)
print(np.dot(a, b)) # 输出 >> 130
②矩阵乘法
np.dot(a, b), 其中a为二维矩阵,b为一维向量,这时b会被当做一维矩阵进行计算。
import numpy as np
a = np.array([1,2,3,4,5]) # 5行*1列, (5,)
b = np.random.randint(0,10, size = (5,5)) # 5行*5列,(5,5)
c1 = np.dot(a, b)) # 输出 >> [31 41 41 83 87], 5行*1列, shape是(5,)
c2 = np.dot(a.T, b)) # c1 == c2
c3 = np.dot(b, a) # c3 != c2 ,shape是 (5,)
c4 = np.dot(b, a.T) # c3 == c4 ,shape是 (5,)
注意:一维矩阵和一维向量的区别
- 一维向量的shape是(5,),一维矩阵的shape是(5,1);
- 若两个参数 a 和 b 都是一维向量,则 dot() 是点积;但当其中有一个是矩阵(含一维矩阵),则 dot() 是矩阵乘法。
- 一维矩阵乘法,会自动进行转置(见示例)。
③矩阵乘法
np.dot(a ,b), 其中a和b都是二维矩阵,此时dot就是进行的矩阵乘法运算
import numpy as np
a = np.random.randint(0, 10, size = (5, 5)) # 5行*5列,(5,5)
b = np.random.randint(0, 10, size = (5, 3)) # 5行*3列,(5,3)
c = np.dot(a, b) # 5行*3列,(5,3)