python - 如何按日期过滤 numpy.ndarray?

标签 python datetime numpy scipy

我有一个二维 numpy.array,其中第一列包含 datetime.datetime 对象,第二列包含整数:

A = array([[2002-03-14 19:57:38, 197],
       [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],
       [2002-03-18 16:18:08, 252],
       [2002-03-23 23:44:38, 327],
       [2002-03-24 09:52:26, 334],
       [2002-03-25 16:04:21, 352],
       [2002-03-25 18:53:48, 353]], dtype=object)

我想做的是选择特定日期的所有行,比如

A[first_column.date()==datetime.date(2002,3,17)]
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)

我怎样才能做到这一点?

感谢您的见解:)

最佳答案

你可以这样做:

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__ 方法,而不是 numpy 数组的 __lt__ 方法。也许这是一个错误。

无论如何,变通并不难;你可以说

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)

由于这为您提供了一个 bool 数组,您可以将其用作 A 的“奇特索引”,从而产生所需的结果。

关于python - 如何按日期过滤 numpy.ndarray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592593/

相关文章:

python - 如何从 pandas 系列中制作 1 by n 数据框?

python - 运行 scipy.test ('full' 需要多长时间)?

java - 如何在没有 JDBC 4.2 驱动程序的情况下从 java.sql.Timestamp 获取 java.time 对象?

python - 从随机矩阵生成样本

python - 循环错误的 Numpy 排序数组,但原始工作正常

python - 扭曲获取密码名称

java - 我的约会让我疯狂 (Java)

javascript - 无法获得前几分钟的正确值

python - 为 2D Numpy 数组逐行插值

python - selenium 中的隐式或显式等待不能通过 time.sleep 可靠地工作?