Python 将列表的平均值计算为子列表
如果我有一个大的列表或numpy数组等,我需要将其拆分为子列表,我如何有效地计算整个列表的统计偏差(平均值、标准偏差等) 举个简单的例子,假设我有一个小列表:Python 将列表的平均值计算为子列表,python,statistics,Python,Statistics,如果我有一个大的列表或numpy数组等,我需要将其拆分为子列表,我如何有效地计算整个列表的统计偏差(平均值、标准偏差等) 举个简单的例子,假设我有一个小列表: l = [2,1,4,1,2,1,3,2,1,5] >>> mean(l) 2.2000000000000002 但是,如果出于某种原因,我需要划分为子列表: l1 = [2,1,4,1] l2 = [2,1,3,2] l3 = [1,5] 当然,你不需要了解很多数学知识就知道这是不正确的: mean(l) = me
l = [2,1,4,1,2,1,3,2,1,5]
>>> mean(l)
2.2000000000000002
但是,如果出于某种原因,我需要划分为子列表:
l1 = [2,1,4,1]
l2 = [2,1,3,2]
l3 = [1,5]
当然,你不需要了解很多数学知识就知道这是不正确的:
mean(l) = mean(mean(l1), mean(l2), mean(l3))
如果所有列表和每个列表的长度都相同,则这可能是正确的,但在本例中并非如此
这个问题的背景与这样一种情况有关,即您有一个非常大的数据集,无法放入内存,因此,您需要将其拆分为卡盘。我假设您知道您拥有的数据点的数量,即len(l)?然后,您可以单独计算每个列表的总和(即Map reduce)或运行总和(即,如果您正在执行readline()),然后在最后除以len(l)?通常,您需要为每个子集保留所谓的充分统计信息。对于平均值和标准偏差,充分的统计数据是数据的数量、它们的总和以及它们的平方和。给定每个子集的这3个量,您可以计算整个集合的平均值和标准偏差
足够的统计数据不一定比子集本身小。但是对于平均值和标准偏差,足够的统计数据只是几个数字。您可以将数据存储在磁盘上,使用。您检查过熊猫吗?@user3570335,需要的不仅仅是一个简单的问题作为答案!!我看不到任何代码,我可以帮助你在这里。。。如果你发布代码。。。这将有助于理解issue@user3570335读两遍,这不是一个与代码相关的问题,这更多的是一个“概念”问题,当然我的问题中没有任何代码,只是因为我不知道如何实现它……唯一的“代码”这就是你在问题中看到的。我不确定这是否100%正确……你可能需要除以长度的总和,然后将每个子列表的总和添加到下一个子列表是的,这就是我说的。您可以(i)并行计算每个列表的总和,然后将所有这些总和相加,或者(ii)将每个列表总和添加到“运行”总和中的前一个列表总和。最后除以所有列表的元素总数。是的,谢谢,这是我的第一个想法,这就是我说的更“有效”的意思。如果可能的话。