如果X.dot(X)
,X[0,:].dot(X[0,:])
与X = np.random.rand(1,2)
有何不同?
我意识到X.dot(X)
正向我抛出错误,因此我正将(1,2)与(1,2)相乘。但是X[0,:].dot(X[0,:])
有何不同。我检查了X[0,:]
的形状,它显示了(2,)
。我看不到这种形状的乘法如何成功。
答案 0 :(得分:0)
如果要在多于一个轴的矩阵或阵列上应用点积,则形状应分别为nxm
和mxn
。
由于您的情况下X
的形状为1x2
,因此对于点积,您需要将其乘以2x1
,可以通过X.T
(numpy转置)来实现。
X.dot(X.T)
给出array([[0.8091749]])
作为输出。
X[0,:].dot(X[0,:])
:之所以有效,是因为它是一维向量,并且numpy会自动推断出如何将点积应用于一维向量。您也可以使用X[0,:].dot(X[0,:].T)
手动完成操作。
两者都应给出相同的结果。