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

在python中避免for循环的最快方法,python,performance,numpy,pandas,Python,Performance,Numpy,Pandas,我有一个以标量为参数的函数。我想映射一个numpy数组作为这个函数的参数 def myfn(scalar): return transformed_scalar 我知道np.vectorize,我已经用它来矢量化了 vmyfunc = np.vectorize(myfn) mapped_array = vmyfunc([x1,x2,...,xn]) 阅读文档后,我意识到这只是一个for循环,请参见下面的引文: 注释 提供矢量化功能主要是为了方便,而不是为了 演出该实现本质上是一个fo

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

def myfn(scalar):
    return transformed_scalar
我知道np.vectorize,我已经用它来矢量化了

vmyfunc = np.vectorize(myfn)
mapped_array = vmyfunc([x1,x2,...,xn])
阅读文档后,我意识到这只是一个for循环,请参见下面的引文:

注释

提供矢量化功能主要是为了方便,而不是为了 演出该实现本质上是一个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

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

如果您通过发布输入、代码和所需输出来解释函数的实际功能,这会有所帮助。一般来说,您编写函数的方式应使其能够以本机方式处理数组。这将取决于你的功能是什么。如果所涉及的操作很简单,它很有可能已经处理了数组。您是否试图使
Loss\u func
使用多个
y
值?还是尺寸更大的
X
W
?给我们一个迭代的具体例子。这使得测试替代品更容易。我们喜欢复制粘贴工作代码。把
W.dot(np.transpose(x))
从循环中去掉?分数的形状是什么?