首页 > 解决方案 > 将数字数组转换为日期

问题描述

我想将一组数字[YYYYMMDD,YYYYMMDD,...]转换为日期,这样我就可以对它们进行减法运算。我的最终目标是从第一个值开始获得一个以天为单位的经过时间的数组x_0。为此,我必须运行一个迭代,将每个替换x_n(x_n - x_0),但我必须以适当的方式转换数字,这样我才能进行减法并获得一致的值。我想知道是否有一种简单的方法可以以对我的目的有用的方式转换 numpy 数组。

标签: python-3.xnumpy

解决方案


由于它们是数字,因此您可以使用整数算术来提取年、月和日。并且,使用它,您可以构造datetime.date. 下面有一个函数可以将您的一个数字转换为日期对象。

import datetime

def number_to_date(number):
  year = number // 10000
  month = number // 100 - year * 100
  day = number - month * 100 - year * 10000
  return datetime.date(year, month, day)

您可以在 for 循环内或地图内使用它来转换所有这些,然后随心所欲地使用它们。例如:

numbers = np.array([20200829, 20200910, 20201015])
dates = list(map(number_to_date, numbers))
base_date = dates[0]
deltas = np.array(list(map(lambda date: (date - base_date).days, dates)))

print(deltas)

如果你愿意,你可以去掉np.arrays。他们只是在那里,因为你说你正在使用 NumPy。


推荐阅读