You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NumPy数组中筛选出距今不足两年的日期对应布尔数组

现有代码的核心错误在于:Python原生datetime对象与numpydatetime64对象做减法得到的是numpytimedelta64类型,该类型没有years属性,无法直接通过.years获取间隔年数。

正确实现代码如下:

import numpy as np
from datetime import datetime

np_arr = np.array([
      [2818, 'Daniel', 'within an hour', '2008-09-24', 4.89, 2.86, 't', 't'],
      [5820, 'Sam', 'within an week', '2020-10-24', 4.89, 2.86, 't', 't'],
      [5420, 'Franc', 'within an second', '2019-11-24', 4.89, 2.86, 't', 't'],
      [5520, 'Sandra', 'within an second', '2019-01-24', 4.89, 2.86, 't', 't']
              ])

# 提取日期列转换为numpy datetime64格式
host_since = np_arr[:,3].astype(np.datetime64) 
# 计算两年前的日期节点,此处精确到月和原代码逻辑对齐
two_years_ago = np.datetime64('today', 'M') - np.timedelta64(2, 'Y')
# 生成布尔过滤数组,reshape为二维匹配期望的输出格式
filter_arr = (host_since >= two_years_ago).reshape(1, -1)

print(filter_arr)

运行后输出结果和期望一致:

array([[False,  True,  True, False]])

实现逻辑说明:统一使用numpy原生的时间类型做运算,直接将所有日期与两年前的基准日期做大小比较,得到对应的布尔值,最后调整数组维度匹配输出要求即可。

内容的提问来源于stack exchange,提问作者Mr. Hankey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:15:08