【发布时间】:2015-11-15 19:13:52
【问题描述】:
我对 numpy 真的很陌生,所以我在理解点积时遇到了一些麻烦。
我有这段简单的代码:
import numpy as np
A = np.ones((5))
B = np.ones((5,10))
A.dot(B)
# array([ 5., 5., 5., 5., 5., 5., 5., 5., 5., 5.])
A.dot(B).shape
# (10,)
我无法理解这段代码中发生了什么。我有点迷茫,因为(10,)的形状好像不是列向量,因为转置是一样的。
A被广播了吗?我认为A应该被广播成(5,5)的形状,所以它可以与B相乘,从而返回一个形状为(5,10)的数组。我怎么了?
【问题讨论】:
-
Numpy 将转置定义为
news shape = reversed(old_shape),对于shape=(5,)没有任何反应。列向量需要shape=(5, 1)。 -
所以基本上
np.ones((5))被视为np.ones((1,5))但没有嵌套列表 -
是的,例如 [1., 1., 1., 1., 1.] dot([[1., 1., 1., 1., 1., 1., 1. ,,,,],
-
我们只是说 numpy 在 1 维数组和具有一列又名向量的 2d 矩阵之间产生了差异
标签: python numpy dot-product