У меня есть матрица данных (в numpy), где 0-й столбец содержит даты в формате ГГГ-ММ-ДД ЧЧ: ММ: СС. Мне нужно удалить даты, которые повторяются более одного раза в час.Сравнение двух матриц дат и поиска индекса в python
Я преобразовал столбец даты в объект времени даты, а затем с np.unique я удалил повторяющиеся записи. Но я не могу найти индекс уникального массива для извлечения данных из основной матрицы.
Что я сделал, что
данных является матрица 11X6, в которых 2 элементы повторяют. Мне нужно, чтобы эти два элемента были удалены.
2015-03-28 15: 41: 00,19.17,19.04,90,0.25,31.44 2015-03-28 15: 43: 00,19.17,18.99,90,0.76,31.44 2015-03- 28 16: 10: 00,19.48,19.41,92,0.25,15.68 2015-03-28 16: 13: 00,19.59,19.41,92,0.51,15.68 2015-03-28 17: 00: 00,21.22 , 19,41,87,0,51,37,63 2015-03-28 18: 00: 00,21,66,21,18,79,0,0,23,82 2015-03-28 19: 00: 00,22.04,21.62,77,0.0,21.41 2015-03-28 20: 00: 00,22.05,21.68,77,0.0,13.71 2015-03-28 21: 00: 00,21.83,20.8,81,0.0,4.42-03-28 22: 00: 00,21.06,20.64,81,0.0,4.81 2015-03-28 23: 00: 00,20.78,20.09,82,0.0,14.35
dates=list(np.unique(([dt.datetime.strptime(dt.datetime.strptime(x,'%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H'),'%Y-%m-%d %H') for x in data[:,0]])))
dates1=(([dt.datetime.strptime(dt.datetime.strptime(x,'%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H'),'%Y-%m-%d %H') for x in data[:,0]]))
затем
uniq_data=data[np.squeeze(np.array(np.where(np.in1d(dates,dates1))).T),:]
но это дало первый элемент 9, но он все еще содержит повторяющийся элемент.
может кто-нибудь сказать, где я ошибся? или предложить лучший метод, который подходит для python numpy.
любая помощь будет очень признательна.
Вы можете использовать datetime.timedelta и удалить любые элементы, расположенные менее чем на один час? Если вы разместите первый столбец массива данных, тогда было бы легче помочь. –
может ли кто-нибудь сказать, как использовать np.in1d, если все элементы первого массива присутствуют во втором массиве? – pkv