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

如何用通用方法在NumPy中判断timedelta数组元素是否为负?

通用判断数组元素是否为负的方法

针对任意数据类型的NumPy数组(包括timedelta64类型),可以通过生成与数组同 dtype 的零值来进行比较,彻底避免类型转换错误:

import numpy as np

# 示例timedelta64类型数组
d = np.diff(np.array([
        '2022-10-13 10:00:00', '2022-10-13 10:30:00',
        '2022-10-13 11:00:00', '2022-10-14 10:00:00',
        '2022-10-13 23:00:00', '2022-10-14 00:00:00'
    ], dtype='datetime64[ns]'))

# 通用方案:生成与数组同类型的零值
zero = np.array(0, dtype=d.dtype)
mask = d < zero
print(mask)
# 输出:[False False False  True False]

也可以用更简洁的方式生成零值:

zero = np.zeros_like(d)[0]
mask = d < zero

原方法报错原因说明

  • 直接使用d < 0:NumPy会尝试将0转换为不带单位的timedelta64基础类型(<m8),但带单位的<m8[ns]与<m8不属于同一类型族,触发类型转换错误。
  • 使用d.dtype(0):d.dtype是dtype对象而非构造函数,无法直接调用,因此抛出TypeError。

内容的提问来源于stack exchange,提问作者Mad Physicist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:50:21