繁体   English   中英

numpy 给定数组值和数组日期的最大值

[英]Max value by date given array value and array date with numpy

我每天都需要知道前一天的最大值是多少,例如:

带日期的数组

date = np.array(['05/12/2017', '05/12/2017', '05/13/2017', '05/13/2017', '05/13/2017',
 '05/13/2017', '05/14/2017', '05/15/2017', '05/15/2017', '05/15/2017',
 '05/15/2017', '05/15/2017', '05/16/2017', '05/16/2017', '05/16/2017',
 '05/16/2017', '05/16/2017' '05/16/2017', '05/17/2017', '05/17/2017'])

具有值的数组:

value = np.array([13, 4, 5, 4, 17, 8, 5, 9, 17, 6, 11, 16, 12, 7, 7, 12, 17, 10, 16, 14])

结果我需要:

result = np.array([0, 0, 13, 13, 13, 13, 17, 5, 5, 5, 5, 5, 17, 17, 17, 17, 17, 17, 17, 17])

请注意,日期数组中缺少逗号。

import numpy as np
from datetime import datetime, timedelta
from collections import defaultdict
dates = np.array(['05/12/2017', '05/12/2017', '05/13/2017', '05/13/2017', '05/13/2017',
 '05/13/2017', '05/14/2017', '05/15/2017', '05/15/2017', '05/15/2017',
 '05/15/2017', '05/15/2017', '05/16/2017', '05/16/2017', '05/16/2017',
 '05/16/2017', '05/16/2017', '05/16/2017', '05/17/2017', '05/17/2017'])

values = np.array([13, 4, 5, 4, 17, 8, 5, 9, 17, 6, 11, 16, 12, 7, 7, 12, 17, 10, 16, 14])


parsed_dates = np.array([datetime.strptime(_, "%m/%d/%Y") for _ in dates])
dv = zip(parsed_dates, values)
max_dates = defaultdict(lambda: 0)
for date, value in dv:
    max_dates[date] = max(value, max_dates[date])

one_day = timedelta(days=1)
result = np.array([max_dates[d - one_day] for d in parsed_dates])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM