gpt4 book ai didi

python - 如何将累积数据转换为每日数据?

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:57 24 4
gpt4 key购买 nike

我有一个按链接和数据传输开始和结束时间段排列的累积传输数据列表。换句话说,times的元素是天的周期; data 的元素是通过此链接传输到当前传输结束的所有 数据的总和:

data = [0.85, 1.6, 1.85, 2.89, 3.56, 4.05, 5.56, 7.89]
times = [[0.5, 1.3], [1.8, 2.1], [2.9, 2.99], [3.5, 3.59], [3.6, 4.1], [4.2, 4.35], [4.65, 4.76], [4.85, 5.5]]

是否有任何 python 或 numpy 方法可以将累积数据转换为每日 ([0, 1], [1, 2], [2, 3], [3, 4,], [4, 5], [5, 6]) 传输数据统计?

P.S 每日数据是指传输了多少数据,特别是在 01 期间(12 等等)。

例如,我想查找在 0 天和 1 天之间传输的数据。在 [0.5, 1.3] 期间,传输了 0.85 GB 数据。所以我必须找到 0.85 GB 的一部分,它在 [0, 1] 之间传输。
0.85 GB * (1-0.5) 天/(1.3-0.5) 天 = 0.53 GB 依此类推。

最佳答案

您可以使用 np.split 将数据分块到每日数组中。首先,您需要定义每一天边缘的索引;为此,您可以使用 np.histogram,您可以在其中定义代表您的日子边缘的箱子。然后 cumsum 得到每一天的边缘索引。

hist, bins = np.histogram(times, bins=range(5)) # 5 is number of days
chunked = np.split(data, hist.cumsum())

Chunked 现在应该是一个数组列表,其中每个数组都包含每天的值。您可以对此应用任何您想要的缩减函数。

print(chunked)   
# [array([0.85]), array([1.6, 1.85]), ...]

map(np.sum, chunked)

请注意,必须对时间/值数组进行排序才能进行拆分。

...

更具可读性但速度更慢,您可以选择每天的数据。

days = np.floor(times)
chunked = [data[days == day] for day in range(5)]

关于python - 如何将累积数据转换为每日数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38972799/

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