非常に大きなファイル (30 GB) に対して非常に大きな関数を実行しています。Python は遅いので、この機能を numba に実装してみることにしました。最初に読んだ後、numbaはdatetimeの操作能力に関して非常に古風であり、np.datetime64オブジェクトの操作のみを許可し、timedeltasと非常に基本的なnp.datetime64操作のみを見ているようです。
ファイル内の列の 1 つは日時オブジェクトです。実行する必要があるチェックの 1 つは、日が変わったかどうか (データセットのタイムゾーンで午後 5:00 として定義されている) をチェックし、日が変わった場合は操作を実行することです。残念ながら、numpy の datetime64 オブジェクトを操作してこのチェックを実行できるクリーンなソリューションが見つかりませんでした。これを行う方法があるかどうか疑問に思っていました。
現在、この関数は、年、月、週、曜日、日、時、分、および秒の整数配列を受け取ります。これが、numba 関数で時間を処理する方法であり、非常に非効率的です。
# What I have right now:
@nb.jit
def check(hour):
for i in range(1, len(hour)-1):
if hour[i-1] == 4 and hour[i] == 5:
# run code
else:
pass
# What I would Like (timestamp is a numpy datetime64 array):
@nb.jit
def check(timestamp):
if hour(timestamp)[i-1] == 4 and hour(timestamp[i]) == 5:
# Run code
else:
pass
Return the same thing that I am doing now without the function needing to use integer array variables.