相关疑难解决方法(0)

Python numpy:无法将datetime64 [ns]转换为datetime64 [D](与Numba一起使用)

我想将一个日期时间数组传递给Numba函数(它不能被矢量化,否则会非常慢).我知道Numba支持numpy.datetime64.但是,它似乎支持datetime64 [D](日精度),但不支持datetime64 [ns](毫秒精度)(我学到了很多方法:它是否记录了?).

我试图从datetime64 [ns]转换为datetime64 [D],但似乎无法找到方法!有任何想法吗?

我用下面的最小代码总结了我的问题.如果你运行testdf(mydates),这是datetime64 [D],它工作正常.如果你运行testdf(dates_input),这是datetime64 [ns],它不会.请注意,此示例只是将日期传递给Numba函数,后者尚未对它们执行任何操作.我尝试将dates_input转换为datetime64 [D],但转换不起作用.在我的原始代码中,我从一个SQL表读入一个pandas数据帧,并需要一个列,将每个日期的日期更改为15日.

import numba
import numpy as np
import pandas as pd
import datetime

mydates =np.array(['2010-01-01','2011-01-02']).astype('datetime64[D]')
df=pd.DataFrame()
df["rawdate"]=mydates
df["month_15"] = df["rawdate"].apply(lambda r: datetime.date( r.year, r.month,15 ) )

dates_input = df["month_15"].astype('datetime64[D]')
print dates_input.dtype # Why datetime64[ns] and not datetime64[D] ??


@numba.jit(nopython=True)
def testf(dates):
    return 1

print testf(mydates)
Run Code Online (Sandbox Code Playgroud)

我跑的错误testdf(dates_input)是:

numba.typeinfer.TypingError: Failed at nopython (nopython frontend)
Var 'dates' unified to object: dates := {pyobject}
Run Code Online (Sandbox Code Playgroud)

python numpy pandas numba

21
推荐指数
1
解决办法
3万
查看次数

标签 统计

numba ×1

numpy ×1

pandas ×1

python ×1