我是机器学习的新手。使用python, numpy。我需要得到大小为(3,2)的矩阵和大小为(100,2)的矩阵的每一行的点积,也就是
a = [[1, 2], [3, 4], [5, 6]]
b = [[5, 5], [6, 6], [7, 7], ...] # it has 100 row
我想要的是:
np.dot(a, b[0])
np.dot(a, b[1])
我现在有:
z = np.dot(a, b)
但尺寸与
不匹配但是我不能使用循环,代码需要向量化
谁能给我一些提示,非常感谢!!对于一个点积,它要求b
的第一个维度匹配a
的第二个维度。因此,您需要转置b
:
np.dot(a, b.T)
输出:
array([[15, 18, 21, 24],
[35, 42, 49, 56],
[55, 66, 77, 88]])
或a
,取决于预期的输出:
>>> np.dot(b, a.T)
array([[15, 35, 55],
[18, 42, 66],
[21, 49, 77],
[24, 56, 88]])
似乎你想计算形状为3,2
的矩阵与转置的点积形状为100,2
的矩阵
你可以得到矩阵m
的转置与m.T
所以你想要的是:
np.dot(a, b.T)
这会给你一个形状为3,100
的矩阵其中每一列都是np.dot(a,b[i])
对应i = 0,...,99