什么´;提高在numpy数组上迭代的python循环速度的最佳解决方案是什么?

什么´;提高在numpy数组上迭代的python循环速度的最佳解决方案是什么?,python,numpy,Python,Numpy,如果有人有时间来看看这个问题。提高此函数处理速度的最佳方法是什么?如果要处理50000个以上的值,它会变得非常慢。谢谢 数据是一个2d numpy数组 def mean_error(data): sub=[] for i in range(len(data)): soma=abs(data[i][0]-data[i][1]) sub.append(soma) mean_error=np.sum(sub)/len(sub)

如果有人有时间来看看这个问题。提高此函数处理速度的最佳方法是什么?如果要处理50000个以上的值,它会变得非常慢。谢谢

数据是一个2d numpy数组

def mean_error(data): 
    sub=[]
    for i in range(len(data)):
        soma=abs(data[i][0]-data[i][1])
        sub.append(soma)
        mean_error=np.sum(sub)/len(sub)
    return mean_error

这不是基本相同的代码吗

def mean_error(data):
    soma = np.abs(data[:, 0] - data[:, 1])
    return (np.cumsum(soma) / np.arange(1, data.shape[0] + 1))[-1]
您可以计算循环内的累积和,并将它们添加到
sub
。计算第一列和第二列的差值之和。。。你不需要一个循环,有切片

这甚至可以简化,因为您在循环中不使用
mean_error
,您只需要在最后使用它(在上面用
[-1]
显示的代码中,但在这种情况下,
cumsum
根本不需要):


尝试查看TensorFlow什么是
self.feedforward
?就这点而言,什么是
self
?您可以通过切片来摆脱循环。另外,对于numpy数组,不要使用
len
,而是使用shape。第一步可能是将
mean_error=np.sum(sub)/len(sub)
循环中拉出…请告诉我为什么调用临时变量
soma
,而不是
diferençA
?不,它不是同一个代码,OP没有累积平均错误,他只是返回最终结果。很好,谢谢。我只需要访问当前返回的最后一个元素,然后它就是同一个元素(对于10x10随机数组,OPs方法与我的方法的差异至少会返回零)。谢谢@GBOFI!与其说是最后一个元素,不如说更简单:
np.sum(soma)/data.shape[0]
?“是的,”他补充道。现在我理解了你在运营问题下的评论,顺便说一句;-)谢谢你的帮助。
def mean_error(data):
    soma = np.abs(data[:, 0] - data[:, 1])
    return np.sum(soma) / data.shape[0]