У меня есть массив numpy с длинным списком дат и времени. Мне было интересно, есть ли способ добавить год ко всем значениям массива сразу без использования цикла for? например. Используя какой-то модуль numpy или datetime?
>>> import datetime
>>> import numpy as np
>>> dts.shape
(64580,)
>>> dts[:5]
array([datetime.date(2000, 1, 15), datetime.date(2000, 1, 15),
datetime.date(2000, 1, 15), datetime.date(2000, 1, 15),
datetime.date(2000, 1, 15)], dtype=object)
>>> new_dts = somemodule.somefunctionforaddingyearorsomething(dts, year=1)
>>> new_dts
array([datetime.date(2001, 1, 15), datetime.date(2001, 1, 15),
datetime.date(2001, 1, 15), datetime.date(2001, 1, 15),
datetime.date(2001, 1, 15)], dtype=object)
Примечание. День каждой даты всегда устанавливается равным 15 дню, поскольку даты представляют собой среднемесячные данные.
Я реализовал это с помощью цикла for, однако это может быть медленным в вычислительном отношении.
Код для этого здесь:
def add_year_to_Datelist(dl):
dts = dl.dates.copy()
for idx, date in enumerate(dts):
dts[idx] = date.replace(year=date.year + 1)
dl.set_dates(dts)
return dl
Ваше здоровье