import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
a*b
array([ 5, 12, 21, 32])
a@b
70
因为在numpy中,array([1, 2, 3, 4])
既是行向量也是列向量。
符号*
表示逐个元素相乘。
numpy.dot()
和符号@
表示矩阵乘法,但是它们会自动把参与矩阵乘法的两个array变成第一个为行向量,第二个为列向量的形式进行相乘。
函数np.outer()
为矩阵的外积运算。
np.outer(a, b)
array([[ 5, 6, 7, 8],
[10, 12, 14, 16],
[15, 18, 21, 24],
[20, 24, 28, 32]])
@
做矩阵乘法a.reshape(len(a), 1) @ b.reshape(1, len(b))
array([[ 5, 6, 7, 8],
[10, 12, 14, 16],
[15, 18, 21, 24],
[20, 24, 28, 32]])
np.matmul
方法做矩阵乘法np.matmul(a.reshape(len(a), 1), b.reshape(1, len(b)))
array([[ 5, 6, 7, 8],
[10, 12, 14, 16],
[15, 18, 21, 24],
[20, 24, 28, 32]])
np.dot()
方法做矩阵乘法np.dot(a.reshape(len(a), 1), b.reshape(1, len(b)))
array([[ 5, 6, 7, 8],
[10, 12, 14, 16],
[15, 18, 21, 24],
[20, 24, 28, 32]])
How to multiply two vector and get a matrix?