需要对python中的numpy数组乘法进行澄清

时间:2018-07-24 03:59:38

标签: python arrays numpy numpy-ndarray

如果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,)。我看不到这种形状的乘法如何成功。

1 个答案:

答案 0 :(得分:0)

如果要在多于一个轴的矩阵或阵列上应用点积,则形状应分别为nxmmxn。 由于您的情况下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)手动完成操作。

两者都应给出相同的结果。