在python中避免for循环的最快方法
我有一个以标量为参数的函数。我想映射一个numpy数组作为这个函数的参数在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
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))
从循环中去掉?分数的形状是什么?