gpt4 book ai didi

ruby - 平均一个大数组?

转载 作者:数据小太阳 更新时间:2023-10-29 08:18:39 25 4
gpt4 key购买 nike

我得到了最终相当于大量数字的内容(从数据库中提取)。

所以,它可能看起来像:[1,3,1,2,1,3,1,2,3,1,2,3,1,3,1,3,1,1, 3,2,3,3,3,3,1,1,1,1,3,2,1]

除非它可能是 50,000 个数字,而不是几十个。最低的数字始终是 1,最高的是 3

我需要做的是找到某种滚动平均值,以便我可以在易于管理的折线图中显示数据。

那么也许平均每 5-10 个数据点的数量?只是不确定处理此类问题的最佳方法是什么。

注意:不希望获得单个平均值。我希望将整个数组提炼成几个平均点。因此,1000 个点的数据集可能会被分解成 10 个平均数。

最佳答案

1.9.3p327 :001 > a = [1,3,1,2,1,3,1,2,3,1,2,3,1,3,1,3,1,1,3,2,3,3,3,3,1,1,1,1,3,2,1]
=> [1, 3, 1, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 3, 1, 3, 1, 1, 3, 2, 3, 3, 3, 3, 1, 1, 1, 1, 3, 2, 1]
1.9.3p327 :002 > a.each_cons(10).map { |subarray| subarray.reduce(0.0, :+) / subarray.size }
=> [1.8, 1.9, 1.9, 1.9, 2.0, 2.0, 2.0, 2.0, 1.9, 1.9, 2.0, 2.1, 2.1, 2.3, 2.3, 2.3, 2.1, 2.1, 2.1, 2.1, 2.1, 1.9]

虽然这在性能方面并不好。它是 O(NM),其中 N 是数组的大小,M 是窗口的大小(在本例中为 10)。

UPD:或者您可以使用 each_slice,如果您需要显着“减少”数组大小:

1.9.3p327 :002 > a.each_slice(10).map { |subarray| subarray.reduce(0.0, :+) / subarray.size }
=> [1.8, 2.0, 2.1, 1.0]

关于ruby - 平均一个大数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com