NumPy有均匀性函数吗?
有没有NumPy的函数可以做到这一点:
我可以自己计算,只是在想有没有更好的方法。
这是我没有使用特定函数时的计算方法 -
len(z_vals)
相当于Ai / A
,因为每个区域都是均匀分布的。
ui_minus = 0
for value in z_vals:
ui_minus += abs(value - np.average(z_vals))/(len(z_vals)*np.average(z_vals))
ui = 1 - 0.5*ui_minus
1 个回答
1
下面的代码是你不使用循环的解决方案。
ui = 1 - 0.5*sum(abs(z_vals - np.average(z_vals)))/(len(z_vals)*np.average(z_vals))
如果你在代码中需要经常使用这个计算,可以很简单地用 lambda
方法定义一个函数。
uniformity = lambda x : 1 - 0.5*sum( abs(x - np.average(x)) )/(len(x)*np.average(x))
然后你可以像下面这样简单地调用这个函数。
ui = uniformity(z_vals)
希望这对你有帮助。