15

numpy datetime64 を使用して現在の日付と時刻を取得するにはどうすればよいですか?

そして、各要素がdatetime64値であるnumpy配列が与えられた場合、どうすれば秒単位で差を得ることができますか?

4

4 に答える 4

6

datetime モジュールを使用して現在の日付を取得し、それを datetime64 に渡すことができます

import numpy as np
import datetime

current = np.datetime64(datetime.datetime.now())

現在の日時がわかったので、numpy の datetime64 ドキュメントを調べて、提供されている例に従うことをお勧めします。timedelta64 の例は特に役立つはずです。

具体的な例として、次のことを検討してください。

import numpy as np
import datetime

current = np.datetime64(datetime.datetime.now())
sample = [np.datetime64('2013-10-22T03:30Z'),
          np.datetime64('2013-10-22T04:40Z'),
          np.datetime64('2013-10-22T05:50Z')]
diff = [current-t for t in sample]
diffSec = [t.item().seconds for t in diff]

このコードは、現在の時間からサンプル時間までの差 (秒単位) を含む diffSec 配列になります。

Out[2]: [1723, 1818, 1913]

説明:

  1. current は、最初に datetime モジュールを使用して現在の時刻に設定されます。
  2. np.datetime64 要素を含むサンプル配列が作成されます
  3. np.timedelta64 要素は、サンプル内の各要素を現在の時刻から減算することによって計算されます。
  4. diff の timedelta ごとに、2 番目の差分が抽出され、新しい配列 diffSec に保存されます

現在の時刻を使用して差を計算しているため、明らかにこれらの正確な結果は再現できません。

于 2013-10-19T02:39:17.880 に答える
0

指定された時間の最後に Z を指定すると、時間は Zulu 形式になります。これは、python numpy ライブラリでは非推奨になっています。(Github の問題: https://github.com/pandas-dev/pandas/issues/12100 )。

In [1]: import numpy as np
In [2]: import datetime

現在の日付には、次を使用できます。

In [3]: current = np.datetime64(datetime.datetime.now())

タイムゾーンに従って時間を変更しようとすると、たとえば次のようになります。

In [3]: previous_date = np.datetime64('2011-01-01T00:00:00-0530')

また

In [3]: previous_date = np.datetime64('2011-01-01T00:00:00Z')

次に、DeprecationWarning を取得します。すでに廃止されているバージョンを使用している場合は、次のコードを使用できます

In [3]: delta = np.timedelta64(5,'h')
In [4}: previous_date = np.datetime64('2011-01-01T00:00:00') + delta
于 2016-12-22T07:24:12.137 に答える
0

t1配列とスカラーの差を計算するとしますt0(両方とも配列またはスカラーである可能性があります)。

In [1]: import numpy as np

In [2]: t1=np.arange('2001-01-01T00:00', '2001-01-01T00:05', dtype='datetime64')

In [3]: t1
Out[3]: 
array(['2001-01-01T00:00-0200', '2001-01-01T00:01-0200',
       '2001-01-01T00:02-0200', '2001-01-01T00:03-0200',
       '2001-01-01T00:04-0200'], dtype='datetime64[m]')

In [4]: t0=np.datetime64('2001-01-01T00:00:00')

In [5]: t0
Out[5]: numpy.datetime64('2001-01-01T00:00:00-0200')

numpy で時差を計算する最良の方法は、timedelta64 を使用することです。上記の例でt0は、 は分単位、t1は秒単位です。時間差を計算するとき、それらは両方ともより小さい単位 (秒) に変換されます。timedelta64 オブジェクトを作成するには、それらを減算するだけです。

In [6]: t1-t0
Out[6]: array([  0,  60, 120, 180, 240], dtype='timedelta64[s]')

数値形式での応答が必要な場合は、

In [7]: (t1-t0).astype('int')
Out[7]: array([  0,  60, 120, 180, 240])

for構造体を使用して配列をスキャンしたことがないことに注意してください。ベクトル化が妨げられるため、効率が低下します。

于 2014-12-28T09:11:05.080 に答える