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

发布于 2025-02-12 06:27:13 字数 629 浏览 2 评论 0原文

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

带有值的日期

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])

I need for each day to know what the max value of the previous day was, example:

array with dates

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'])

array with values:

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

result I need:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纸伞微斜 2025-02-19 06:27:20

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

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])

Note that you have a missing comma in the dates array.

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])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文