TL;DR
import datetime
# numpy_datetime = numpy.datetime64型の変数
python_datetime = datetime.datetime.fromtimestamp(numpy_datetime.astype(datetime.datetime) * 1e-9)
参考:https://stackoverflow.com/questions/13703720/converting-between-datetime-timestamp-and-datetime64
補足
- たとえばpandasでエクセルデータをDataFrameにしたとする。その際、セルのデータ型が日時だと、numpy.datetime64にキャストされる。
- これをPythonのdatetime.datetime型にするのはすこしめんどくさかった。結論として、
numpy.datetime64 -> unixtime -> datetime.datetime
と変換すればよい - numpy.datetime64を.astype(datetime.datetime)とするとUNIX timeに変換されるが、この値はint型であり、一方Pythonのdatetime.datetimeのunixtimeはFloat型である(この差は、精度とか計算効率の話かな?)。
- なのでnumpy-unixtimeに1e-9をかけて、Python-unixtimeと桁を合わせてから、datetime.datetime.fromtimestanp(unixtime)でPythonのdatetime.datetime型が得られる