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

时间:2018-08-23 18:19:11

标签: python numpy

如果有人有时间看看这个问题。提高此功能处理速度的最佳方法是什么?如果必须处理超过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

1 个答案:

答案 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