Numpy.timedelta64変数から時間差を秒単位で取得する方法は?
time1 = '2012-10-05 04:45:18'
time2 = '2012-10-05 04:44:13'
dt = np.datetime64(time1) - np.datetime64(time2)
print dt
0:01:05
dt
を、秒単位の時間差を表す数値(intまたはfloat)に変換したいと思います。
「ラップされた」日時アイテムを介してアクセスできます。
_>>> dt.item().total_seconds()
65.0
_
説明:ここでdt
は 配列スカラー in numpy
であり、これはゼロですランク配列または0次元配列。したがって、dt
にはndarrayが持つすべてのメソッドがあり、たとえばdt.astype('float')
を実行できます。ただし、pythonオブジェクト、この場合は_datetime.timedelta
_オブジェクト)をラップします。
元のスカラーを取得するには、dt.item()
を使用できます。配列スカラーにインデックスを付けるには、空のタプルを使用してgetitemのやや奇妙な構文を使用できます。
_>>> dt[()]
array(datetime.timedelta(0, 65), dtype='timedelta64[s]')
_
これはnumpyのすべてのバージョンで動作するはずですが、numpy v1.7 +を使用している場合は、 J.F。Sebastien hereの回答で説明されているように、新しいnumpy datetime APIを直接使用した方が良い場合があります。
numpy
1.7実験日時API を使用して、numpy.timedelta64()
オブジェクトから秒数を取得するには:
seconds = dt / np.timedelta64(1, 's')