Получить индекс списка дат, который ближе всего к данной дате - PullRequest
0 голосов
/ 21 июня 2019

У меня есть следующее date:

date=np.datetime64 (2019-12-15)

тогда у меня есть список дат np.datetime64:

['2018-01-01','2019-01-01','2019-04-12','2019-12-01']

Я бы хотел получить index от list, который ближе всего к моей дате.

Желаемым выводом будет 3, то есть позиция списка дат ближе к моей дате.

Я не могу привести пример, поскольку не знаю, как проверить мою проблему.

Я могу думать только о assert.AlmostEqual, но я не уверен, как это отразить на примере.

Ответы [ 2 ]

3 голосов
/ 21 июня 2019

Выразите свой список в виде массива и просто найдите индекс наименьшей разницы, используя np.argmin:

import numpy as np

date = np.datetime64('2019-12-15')
array = np.array(['2018-01-01','2019-01-01','2019-04-12','2019-12-01'],
                 dtype=np.datetime64)

result = np.argmin(np.abs(array - date))
0 голосов
/ 21 июня 2019

В соответствии с документацией datetime , вы можете рассчитать временные интервалы, просто вычитая даты.

#Set date
date=np.datetime64 ('2019-12-15')


#Create list of strings holding date values
l = ['2018-01-01','2019-01-01','2019-04-12','2019-12-01']

#Convert strings to numpy dates 
l = [numpy.datetime64(x) for x in l]

#For each value in date list, subtract from start date. 
delta = [abs(x - date) for x in l]

#Set minimum index (see link below)
idx = np.argmin(d)


Это выдаст 3.

Мин. Индекс, полученный из здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...