52

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

4

3 に答える 3

92

1.7 実験的な datetime APInumpy.timedelta64()を使用してオブジェクトから秒数を取得するには:numpy

seconds = dt / np.timedelta64(1, 's')
于 2013-02-17T12:39:20.757 に答える
41

「ラップされた」日時アイテムからアクセスできます。

>>> dt.item().total_seconds()
65.0

説明:これdtは、の配列スカラーです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 +を使用している場合は、ここのJF Sebastienの回答で説明されているように、新しいnumpydatetimeAPIを直接使用する方がよい場合があります。

于 2013-02-17T12:09:25.473 に答える