matlab中MAPE SAPE,如何在Python中优化MAPE代码?

这是一个带有

masking的矢量化方法 –

def mape_vectorized(a, b):

mask = a <> 0

return (np.fabs(a[mask] - b[mask])/a[mask]).mean()

可能是一个更快的分区计算后屏蔽 –

def mape_vectorized_v2(a, b):

mask = a <> 0

return (np.fabs(a - b)/a)[mask].mean()

运行时测试 –

In [217]: a = np.random.randint(-10,10,(10000))

...: b = np.random.randint(-10,10,(10000))

...:

In [218]: %timeit mape(a,b)

100 loops, best of 3: 11.7 ms per loop

In [219]: %timeit mape_vectorized(a,b)

1000 loops, best of 3: 273 µs per loop

In [220]: %timeit mape_vectorized_v2(a,b)

1000 loops, best of 3: 220 µs per loop

你可能感兴趣的:(matlab中MAPE,SAPE)