通过比较两个数组来计算百分比误差



我在两个numpy数组中有一些数据。

a = [1, 2, 3, 4, 5, 6, 7]
b = [1, 2, 3, 5, 5, 6, 7]

我说数组a是我的计算结果,数组b是真正的结果值。我想计算结果中的误差百分比。现在,我可以循环遍历这两个数组,如果值匹配,则将它们与0进行比较,如果值不匹配,则比较1,然后将它们相加,除以总值,计算误差百分比。

有没有可能更快、更优雅的方法来做到这一点?

首先使用a != b计算ab不同的位置,然后找到这些值的平均值:

>>> import numpy as np
>>> a = np.array([1, 2, 3, 4, 5, 6, 7])
>>> b = np.array([1, 2, 3, 5, 5, 6, 7])
>>> error = np.mean( a != b )
>>> error
0.14285714285714285

类似的东西

>>> a = np.array([1, 2, 3, 5, 5, 6, 7])
>>> b = np.array([1, 2, 3, 4, 5, 6, 7])
>>> (a != b).sum()/float(a.size)
0.14285714285714285

更新我很好奇为什么这个稍微快

a = np.random.randint(4, size=1000)
b = np.random.randint(4, size=1000)
timeit('from __main__ import a, b; (a != b).sum()/float(a.size)', number=10000)
# 0.42409151163039496
timeit('from __main__ import a, b, np; np.mean(a != b)', number=10000)
# 0.5342614773662717

最新更新