Bir datetime dizisini bir Numba işlevine iletmek istiyorum (bu, vektörleştirilemez ve aksi halde çok yavaş olabilir). Numba'nın numpy.datetime64'ü desteklediğini anlıyorum. Ancak, o datetime64 [D] (gün hassasiyeti) desteklemiyor gibi görünüyor, fakat datetime64 [ns] (milisaniye kesinliği) değil (bunu zor yoldan öğrendim: belgelendi mi?).Python numpy: datetime64 [ns] - datetime64 [D] 'ye dönüştürülemez (Numba ile kullanmak için)
datetime64 [ns] 'tan datetime64 [D]' e dönüştürmeyi denedim, ancak bir yol bulamadık! Herhangi bir fikir?
Sorunumu asgari kodla özetledim. Datetime64 [D] olan testdf(mydates)
çalıştırırsanız, iyi çalışır. Eğer datetime64 [ns] olan testdf(dates_input)
çalıştırırsanız, o olmaz. Bu örneğin sadece tarihleri (henüz) onlarla hiçbir şey yapmayan Numba işlevine iletir. Date_input öğesini datetime64 [D] 'ye dönüştürmeye çalışıyorum, ancak dönüşüm çalışmıyor. Orijinal kodumda bir SQL tablosundan pandalar veri çerçevesine okudum ve her bir günün tarihini 15'e değiştiren bir sütuna ihtiyacım var.
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)
Ben testdf(dates_input)
çalıştırırsanız alıyorum hatadır:
numba.typeinfer.TypingError: Failed at nopython (nopython frontend)
Var 'dates' unified to object: dates := {pyobject}
Bu gerçekten yararlı bir sorudur, ancak arama yapmak için bazı nedenlerle bulmak çok zordu. Pandas verileri üzerinde 'np.busday_count' kullanılmaya çalışılırken benzer bir hata aldım, şu okundu: 'TypeError: Iterator işlenen 0 dtype dtype ('