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

numpy处理datetime date与timedelta64相加报UFuncTypeError问题

报错解决方法

错误原因

该报错是运算两侧数据类型不兼容导致的:tmin是Python原生datetime.date类型,对应numpy数组的object dtype,无法直接和numpy专属的timedelta64[D]时间差类型执行加法运算。

解决方案

方法1(推荐):将日期数组转为numpy datetime64类型

创建xtim数组时直接指定日期类型,后续所有时间运算都用numpy内置时间类型执行,效率更高:

import numpy as np
import datetime

vals = [
datetime.date.fromisoformat('2004-06-01'),
datetime.date.fromisoformat('2004-07-01'),
datetime.date.fromisoformat('2004-08-01'),
datetime.date.fromisoformat('2004-09-01'),
datetime.date.fromisoformat('2004-10-01'),
datetime.date.fromisoformat('2004-11-01')]

# 关键修改:指定dtype为datetime64[D],替换默认的object类型
xtim = np.array(vals, dtype='datetime64[D]')
tmin = np.min(xtim)

ytim = np.arange(0.0, 150.0, 30.0)
tnew = tmin + ytim.astype('timedelta64[D]')

运行后得到的tnew就是你需要的从tmin开始每隔30天的日期数组。如果后续需要转回Python原生datetime对象,直接调用tolist()方法即可:

tnew_python = tnew.tolist()

方法2:仅转换tmin的类型

如果不想修改原始xtim数组的类型,也可以只在做加法前单独转换tmin的类型:

xtim = np.array(vals)
tmin = np.min(xtim)
# 单独把原生date对象转为numpy datetime64类型
tmin_np = np.datetime64(tmin)
ytim = np.arange(0.0, 150.0, 30.0)
tnew = tmin_np + ytim.astype('timedelta64[D]')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:45:09