避免python中for循环的最快方法

时间:2016-02-17 20:04:59

标签: python performance numpy pandas

我有一个以标量为参数的函数。我想映射一个numpy数组作为此函数的参数。

def myfn(scalar):
    return transformed_scalar

我知道np.vectorize,我已经用它来对它进行矢量化

vmyfunc = np.vectorize(myfn)
mapped_array = vmyfunc([x1,x2,...,xn])

阅读文档我意识到它只是一个for循环,请参阅下面的引用:

  

注释

     

提供vectorize函数主要是为了方便,而不是为了方便   性能。实现基本上是for循环

我正在寻找另一种改进的方法,以实现该函数的矢量化,从而提高此方法的性能。 也许是使用熊猫的东西?

更新

采用标量的函数如下所示:

def Loss_func(x, y, W):
  delta = 1.0
  scores = W.dot(np.transpose(x))
  margins = np.maximum(0, scores - scores[y] + delta)
  margins[y] = 0
  loss_i = np.sum(margins)
  return loss_i

其中是标量,X和W 2-D np数组。

0 个答案:

没有答案