NumPy有均匀性函数吗?

2 投票
1 回答
857 浏览
提问于 2025-04-17 23:42

有没有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)

希望这对你有帮助。

撰写回答