注:datetime64は正しいことをしていると思います。ですから、役に立つ場合に備えて、投稿はそのままにしておきます。
numpy 1.7.0の時点で、np.datetime64に渡された秒はローカルタイムゾーンにあると解釈されます。UNIX utc秒をnp.datetime64にインポートするためのクリーンで高速な方法はありますか?私はこれらの50Mの配列を持っていますが、私の秒の値がUTCであることをnp.datetime64に伝える方法があるはずですよね?
datetime.datetime.utcfromtimestamp(1338624706)
datetime.datetime(2012, 6, 2, 8, 11, 46) # this is the time I'm looking for
np.datetime64(1338624706, 's')
numpy.datetime64('2012-06-02T01:11:46-0700') # Darn you ISO! Off by 7 hours
dt64 = np.datetime64(1338624706, 's')
dt64.astype(datetime.datetime)
datetime.datetime(2012, 6, 2, 8, 11, 46) # Wait, did it do the right thing?
# This seems like the best option at the moment,
# but requires building datetime.datetime objects:
dt64 = np.datetime64(datetime.datetime.utcfromtimestamp(1338624706))
numpy.datetime64('2012-06-02T01:11:46.000000-0700') # Show this
dt64.astype(datetime.datetime)
datetime.datetime(2012, 6, 2, 8, 11, 46) # Looks like it worked
私は本当に文字列操作に頼りたくありません。unixutcintまたはfloatの配列を正しいdt64に直接変換できると便利です。
https://stackoverflow.com/a/13704307/417578は、numpy 1.8.0が私が望むことを実行する可能性があることを意味しますが、1.7.0で動作するものはありますか?