【问题标题】:Dot Product of Two 2-D Column Vectors Using Numpy (Without Transpose)使用 Numpy 的两个二维列向量的点积(无转置)
【发布时间】:2022-01-23 13:09:57
【问题描述】:

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

  1. 如果我们有两个像 v 和 w 这样的一维 np 数组,我们可以使用 np.inner(v, w) 来获得这两个向量的点积,但是由于一维数组的形状为 (m, ),因此我不喜欢使用它们通过 (m, ) 中丢失的第二维来制造麻烦
  2. 如果我们使用二维数组来定义 v 和 w,如下所示:
    v = np.array([[1], [3], [5]])
    w = np.array([[2], [4], [6]])

我们可以通过转置这些向量之一,然后使用矩阵乘法来计算点积:

    vdotw = v.T @ w

或:

   vdotw = w.T @ v

我的问题是是否有任何方法是 numpy 可以直接计算两个向量(定义为 2D 数组而不是那些有趣的 1D 数组)的点积而不转置其中之一?

【问题讨论】:

    标签: python arrays numpy dot-product


    【解决方案1】:

    Numpy 的 einsum() 可用于执行此操作。

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

    【讨论】:

    • 谢谢 dshin。我完全明白了。我只是好奇是否有一些特定于 numpy 中两个 2D 向量的点积的函数。我们应该使用转置...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2015-12-27
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多