1

非常に大きなファイル (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.
4

1 に答える 1