使用 Numpy(无转置)的两个二维列向量的点积

Dot Product of Two 2-D Column Vectors Using Numpy (Without Transpose)

我正在尝试使用 numpy 计算两个二维向量的点积 这是我目前所知道的:

  1. 如果我们有两个一维 np 数组,例如 v 和 w,我们可以使用 np.inner(v, w) 来获取这两个向量的点积,但是由于一维数组的形状为 (m, ) 我不喜欢由于在 (m, )
  2. 中丢失的第二维造成麻烦而使用它们
  3. 如果我们使用二维数组来定义 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() 可以用来做这个。

但是,您的要求很不寻常。你为什么不想使用转置?转置运算符的成本几乎为零:它不会像我怀疑的那样复制基础数据。