请注意,您不仅在处理一维数组:
In [6]: a.ndimOut[6]: 1In [7]: b.ndimOut[7]: 2
因此,
b是2D阵列。您还可以在
b.shape:(1,3)的输出中看到这一点,因为(3,)是一个维度,它表示两个维度。
np.dot1D和2D阵列的行为不同(来自docs):
这就是您获得不同结果的原因,因为您正在混合1D和2D数组。由于
b是2D数组,请
np.dot(b, b)尝试在两个1x3矩阵上进行矩阵乘法,但失败。
对于一维数组,np.dot会做向量的内积:
In [44]: a = np.array([1,2,3])In [45]: b = np.array([1,2,3])In [46]: np.dot(a, b)Out[46]: 14In [47]: np.inner(a, b)Out[47]: 14
对于2D数组,它是矩阵乘法(因此1x3 x 3x1 = 1x1或3x1 x 1x3 = 3x3):
In [49]: a = a.reshape(1,3)In [50]: b = b.reshape(3,1)In [51]: aOut[51]: array([[1, 2, 3]])In [52]: bOut[52]:array([[1], [2], [3]])In [53]: np.dot(a,b)Out[53]: array([[14]])In [54]: np.dot(b,a)Out[54]:array([[1, 2, 3], [2, 4, 6], [3, 6, 9]])In [55]: np.dot(a,a)---------------------------------------------------------------------------ValueError Traceback (most recent call last)<ipython-input-55-32e36f9db916> in <module>()----> 1 np.dot(a,a)ValueError: objects are not aligned
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)