使用 Numpy(无转置)的两个二维列向量的点积
Dot Product of Two 2-D Column Vectors Using Numpy (Without Transpose)
我正在尝试使用 numpy 计算两个二维向量的点积
这是我目前所知道的:
- 如果我们有两个一维 np 数组,例如 v 和 w,我们可以使用
np.inner(v, w)
来获取这两个向量的点积,但是由于一维数组的形状为 (m, ) 我不喜欢由于在 (m, ) 中丢失的第二维造成麻烦而使用它们
- 如果我们使用二维数组来定义 v 和 w,如下所示:
v = np.array([[1], [3], [5]])
w = np.array([[2], [4], [6]])
我们可以通过转置这些向量之一然后使用矩阵乘法来计算点积:
vdotw = v.T @ w
或:
vdotw = w.T @ v
我的问题是 numpy 是否有任何方法可以直接计算两个向量(定义为二维数组,而不是那些有趣的一维数组)的点积,而无需转置其中之一?
Numpy 的 einsum()
可以用来做这个。
但是,您的要求很不寻常。你为什么不想使用转置?转置运算符的成本几乎为零:它不会像我怀疑的那样复制基础数据。
我正在尝试使用 numpy 计算两个二维向量的点积 这是我目前所知道的:
- 如果我们有两个一维 np 数组,例如 v 和 w,我们可以使用
np.inner(v, w)
来获取这两个向量的点积,但是由于一维数组的形状为 (m, ) 我不喜欢由于在 (m, ) 中丢失的第二维造成麻烦而使用它们
- 如果我们使用二维数组来定义 v 和 w,如下所示:
v = np.array([[1], [3], [5]])
w = np.array([[2], [4], [6]])
我们可以通过转置这些向量之一然后使用矩阵乘法来计算点积:
vdotw = v.T @ w
或:
vdotw = w.T @ v
我的问题是 numpy 是否有任何方法可以直接计算两个向量(定义为二维数组,而不是那些有趣的一维数组)的点积,而无需转置其中之一?
Numpy 的 einsum()
可以用来做这个。
但是,您的要求很不寻常。你为什么不想使用转置?转置运算符的成本几乎为零:它不会像我怀疑的那样复制基础数据。