如果有人有时间看看这个问题。提高此功能处理速度的最佳方法是什么?如果必须处理超过5万个值,它会变得非常慢。谢谢。
数据是一个二维的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
答案 0 :(得分:1)
这基本上不是相同的代码吗?
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]
中显示,但是在这种情况下,{{1 }}完全没有必要):
cumsum