NumPy предоставляет специальные типы данных для работы с датами и временем: datetime64
и timedelta64
. Эти объекты позволяют эффективно манипулировать датами и временем, выполняя различные операции, такие как сложение, вычитание и др.
Представляет собой объект даты и времени с фиксированной точностью. Отличительная особенность datetime64
по сравнению с родным объектом Python datetime
заключается в том, что он позволяет компактно хранить большие массивы дат и времени и проводить вычисления над ними с высокой производительностью.
Создание объекта datetime64
:
import numpy as np
# Создание объекта datetime64, представляющего собой дату
date = np.datetime64('2023-08-25')
print(date) # 2023-08-25
Вы также можете указать точность до месяцев, дней, часов, минут и так далее:
# Точность до месяца
month = np.datetime64('2023-08')
print(month) # 2023-08
# Точность до минут
minute = np.datetime64('2023-08-25T15:30')
print(minute) # 2023-08-25T15:30
Пока datetime64
представляет конкретные моменты времени, timedelta64
используется для представления разности между двумя моментами времени. Это аналогично timedelta в стандартной библиотеке Python.
Создание объекта timedelta64
:
import numpy as np
# Разница в 5 днях
duration_days = np.timedelta64(5, 'D')
print(duration_days) # 5 days
# Разница в 30 минутах
duration_minutes = np.timedelta64(30, 'm')
print(duration_minutes) # 30 minutes
# Разница в 2 часах
duration_hours = np.timedelta64(2, 'h')
print(duration_hours) # 2 hours
NumPy предоставляет функциональные возможности для работы с датами и временем, которые являются эффективными и гибкими. Давайте рассмотрим некоторые из основных операций с датами, доступных в NumPy.
Сложение и вычитание: мы можем прибавлять или вычитать объект timedelta64
из объекта datetime64
.
import numpy as np
date = np.datetime64('2023-08-25')
duration = np.timedelta64(5, 'D')
future_date = date + duration
print(future_date) # 2023-08-30
past_date = date - duration
print(past_date) # 2023-08-20
Разница между двумя датами: возвращает объект timedelta64
.
import numpy as np
start_date = np.datetime64('2023-08-01')
end_date = np.datetime64('2023-08-25')
duration = end_date - start_date
print(duration) # 24 days
Даты можно сравнивать, чтобы определить, какая из них раньше или позже:
import numpy as np
date1 = np.datetime64('2023-08-01')
date2 = np.datetime64('2023-08-25')
print(date1 < date2) # True
print(date1 == date2) # False
NumPy позволяет создавать последовательные диапазоны дат:
import numpy as np
dates_range = np.arange('2023-08-01', '2023-09-01', dtype='datetime64[D]')
print(dates_range)
# ['2023-08-01' '2023-08-02' '2023-08-03' '2023-08-04' '2023-08-05'
# '2023-08-06' '2023-08-07' '2023-08-08' '2023-08-09' '2023-08-10'
# '2023-08-11' '2023-08-12' '2023-08-13' '2023-08-14' '2023-08-15'
# '2023-08-16' '2023-08-17' '2023-08-18' '2023-08-19' '2023-08-20'
# '2023-08-21' '2023-08-22' '2023-08-23' '2023-08-24' '2023-08-25'
# '2023-08-26' '2023-08-27' '2023-08-28' '2023-08-29' '2023-08-30'
# '2023-08-31']
Вы можете изменять точность объектов datetime64
, например, с дней на месяцы или наоборот:
date_month = np.datetime64('2023-08', 'M')
date_day = np.datetime64(date_month, 'D')
print(date_day) # 2023-08-01
Для вычисления статистики или агрегации по датам вы можете использовать стандартные функции NumPy, такие как mean()
, min()
и max()
. Например, для нахождения самой ранней даты в массиве:
import numpy as np
dates = np.array(['2023-08-01', '2023-08-10', '2023-07-25'], dtype='datetime64[D]')
print(np.min(dates)) # 2023-07-25
Эти операции делают NumPy инструментом выбора для многих специалистов, работающих с временными рядами или датами в контексте научных вычислений.
С помощью объектов datetime64
и timedelta64
NumPy предоставляет компактные и эффективные структуры данных для представления моментов времени и интервалов соответственно. Это позволяет проводить разнообразные операции над датами, такие как сложение, вычитание, сравнение и создание диапазонов дат с удивительной легкостью.
Содержание: