Вы можете сделать это:
from_date=datetime.datetime(2002,3,17,0,0,0)
to_date=from_date+datetime.timedelta(days=1)
idx=(A[:,0]>from_date) & (A[:,0]<=to_date)
print(A[idx])
# array([[2002-03-17 16:31:33, 237],
# [2002-03-17 16:47:18, 238],
# [2002-03-17 18:29:31, 239],
# [2002-03-17 20:10:11, 240]], dtype=object)
A[:,0]
- это первый столбец A
.
К сожалению, сравнение A[:,0]
с объектом datetime.date
вызывает ошибку TypeError,Однако сравнение с объектом datetime.datetime
работает:
In [63]: A[:,0]>datetime.datetime(2002,3,17,0,0,0)
Out[63]: array([False, True, True, True, True, True, True, True, True, True], dtype=bool)
Также, к сожалению,
datetime.datetime(2002,3,17,0,0,0)<A[:,0]<=datetime.datetime(2002,3,18,0,0,0)
также вызывает ошибку TypeError, поскольку при этом вызывается метод datetime.datetime
__lt__
вместо метода __lt__
массива numpy.Возможно, это ошибка.
Во всяком случае, это не сложно обойти;Вы можете сказать
In [69]: (A[:,0]>datetime.datetime(2002,3,17,0,0,0)) & (A[:,0]<=datetime.datetime(2002,3,18,0,0,0))
Out[69]: array([False, True, True, True, True, False, False, False, False, False], dtype=bool)
Так как это дает вам логический массив, вы можете использовать его как «причудливый индекс» для A
, что дает желаемый результат.