我有一个数据矩阵(numpy)格式,其中第0列包含YYYY-mm-dd HH:MM:SS格式的日期。我需要删除一小时内重复多次的日期。
我已将日期列转换为日期时间对象,然后使用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 2015-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的方法。
任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
您可以获取允许您获取唯一数组的元素的索引:numpy.unique(…, return_index=True)
是您的朋友。