web-dev-qa-db-ja.com

numpy.timedelta64からの時間差(秒)

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)に変換したいと思います。

39
sashkello

「ラップされた」日時アイテムを介してアクセスできます。

_>>> 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を直接使用した方が良い場合があります。

29
wim

numpy 1.7実験日時API を使用して、numpy.timedelta64()オブジェクトから秒数を取得するには:

seconds = dt / np.timedelta64(1, 's')
66
jfs