您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中从频率分布表中获得均值和标准差

如何在Python中从频率分布表中获得均值和标准差

首先,我将杂乱的列表更改为两个numpy数组,就像@ user8153那样:

val, freq = np.array(list_tuples).T

然后,您可以重建数组(使用np.repeat防止循环):

data = np.repeat(val, freq)

并在您的阵列上使用numpy统计函数data

如果这导致内存错误(或者您只是想尽可能提高性能),则还可以使用一些专门构建的函数

def mean_(val, freq):
    return np.average(val, weights = freq)

def median_(val, freq):
    ord = np.argsort(val)
    cdf = np.cumsum(freq[ord])
    return val[ord][np.searchsorted(cdf, cdf[-1] // 2)]

def mode_(val, freq): #in the strictest sense, assuming unique mode
    return val[np.argmax(freq)]

def var_(val, freq):
    avg = mean_(val, freq)
    dev = freq * (val - avg) ** 2
    return dev.sum() / (freq.sum() - 1)

def std_(val, freq):
    return np.sqrt(var_(val, freq))
python 2022/1/1 18:25:51 有397人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶