【问题标题】:vectorizing numpy operations向量化 numpy 操作
【发布时间】:2021-05-31 18:59:09
【问题描述】:

我有一个如下所示的 numpy 数组:

array([[2, 3],
       [4, 6],
       [6, 6]])

我对自己在每一行之间进行点积运算很感兴趣。例如,假设我想在第一行加上自己:

ans = x[0,:] @ x[0,:].T

ans = 13

第二个:

ans = x[1,:] @ x[1,:].T

ans = 52
ans = x[2,:] @ x[2,:].T
and = 72

有没有办法在不使用numpy.apply_along_axis 的情况下对这个操作进行矢量化?期望的输出是

array([13, 52, 72])

不必是这个特定的操作。具体来说,我正在执行一个 SVM 实现,并且我有一些内核要在我的 m x d 特征矩阵上进行矢量化。我该怎么做?

【问题讨论】:

  • (x*x).sum(axis=1) 是一种方式
  • x[0.:].T 转置不会改变任何东西。试试看!

标签: python numpy vectorization


【解决方案1】:

你可以的

numpy.linalg.norm(a,axis=1)**2

为您提供每行的范数并对其进行平方。

【讨论】:

    【解决方案2】:
    np.square(x[:,0]) + np.square(x[:,1])
    

    输出

    array([13, 52, 72], dtype=int32)
    

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2019-09-11
      • 1970-01-01
      相关资源
      最近更新 更多