23

エントリに日付が割り当てられた巨大な ASCII ファイルを解析しています。そのため、numpy.datetime64 と並行して datetime パッケージを使用して、配列機能を追加していることに気付きました。日付には pandas パッケージを使用することをお勧めしますが、pandas なしでこれをやってのけるようにしてください。datetime64 オブジェクトから 1 年または 3 か月などの特定の日付ステップを加算/減算するためのきちんとした方法を探しています。

現在、dt64 オブジェクトを dt オブジェクトに変換しており、replace 関数を使用してたとえば年を変更し、後で dt64 に戻す必要がありますが、これは少し面倒です。したがって、numpy.datetime64 形式のみを使用したより良い解決策を誰かが持っていれば幸いです。

例:「YYYY-12-31」を「(YYYY-1)-12-31」に変換する

a = np.datetime64(2014,12,31)               # a is dt64 object
b = a.astype(object)                        # b is dt object converted from a
c = np.datetime64( b.replace(b.year-1))     # c is dt64 object shifted back 1 year (a -1year)
4

2 に答える 2

44

numpy.timedelta64 オブジェクトを使用して、numpy.datetime64 オブジェクトで時間デルタ計算を実行できます。 Datetime and Timedelta Arithmeticを参照してください。

1 年は 365 日または 366 日になるため、1 年を引くことはできませんが、代わりに 365 日を引くことができます。

import numpy as np
np.datetime64('2014-12-31') - np.timedelta64(365,'D')

結果:

numpy.datetime64('2013-12-31')

于 2014-05-21T16:56:02.263 に答える