gpt4 book ai didi

Python字典合并两个字典并构建累积

转载 作者:行者123 更新时间:2023-11-30 23:01:06 25 4
gpt4 key购买 nike

我有两个数组 date_INdate_OUT,其中包含动物进入和离开农场的日期。现在我想绘制随时间变化的总人口数。

date_IN, date_OUT
26.09.1999,19.12.2006
26.09.1999,19.01.2005
26.09.1999,15.02.2007
26.09.1999,29.03.2006
...

我尝试首先计算每天的条目数,从进来的动物数量中减去离开农场的动物数量,然后对排序后的值求和。但不幸的是,减法不起作用。

date_EIN, date_AUS=np.genfromtxt("Gesamtbestand.txt",delimiter=',',unpack = True, converters={ 0: mdates.strpdate2num('%d.%m.%Y'), 1: mdates.strpdate2num('%d.%m.%Y') or 0})

c = Counter(date_EIN)
d = Counter(date_AUS)
tn_each_day = c - d

sorted_keys = sorted(tn_each_day,key=tn_each_day.get)
z = cumsum(sorted(d.values())) # or z = cumsum([d[k] for k in sorted_keys])
tn = dict(zip(sorted_keys,z))

有人知道如何解决这个问题吗?

最佳答案

为了简洁起见,我们使用数字而不是日期:

>>> from collections import Counter
>>> import itertools as it
>>> import operator as op
>>> ein = Counter([1,2,2,3,3])
>>> aus = Counter([1,2,3,4])
>>> delta = {k:ein.get(k,0)-aus.get(k,0) for k in set(it.chain(ein,aus))}
>>> delta
{1: 0, 2: 1, 3: 1, 4: -1}
>>> sorted_dates = sorted(delta)
>>> population = dict(zip(sorted_dates, it.accumulate((delta[k] for k in sorted_dates), add)))
>>> population
{1: 0, 2: 1, 3: 2, 4: 1}

即对于每个日期,population 保存农场中存在的动物数量。

例如

在日期 1 一只动物进去,一只出去 -> 0 农场人口

在日期 2 两只动物进去,一只出去 -> 1 个农场人口

在日期 3 两只动物进去,一只出去 -> 2 个农场人口

在日期 4 0 只动物进入,1 只出去 -> 1 农场人口

关于Python字典合并两个字典并构建累积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35024512/

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