In [563]: arr = np.array('2019-11-01T09:17:10', 'datetime64[us]')
In [567]: arr
Out[567]: array('2019-11-01T09:17:10.000000', dtype='datetime64[us]')
tolist 或 item 产生一个 datatime 对象:
In [568]: arr.item()
Out[568]: datetime.datetime(2019, 11, 1, 9, 17, 10)
将元素从其数组包装器中取出:
In [569]: arr[()]
Out[569]: numpy.datetime64('2019-11-01T09:17:10.000000')
我的 numpy 版本拒绝使用 float:
In [570]: float(arr[()])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-570-4e2ece106714> in <module>
----> 1 float(arr[()])
TypeError: float() argument must be a string or a number, not 'datetime.datetime'
astype(float) 确实有效:
In [571]: arr.astype(float)
Out[571]: array(1.57259983e+15)
但如果我先转换时间单位:
In [572]: arr.astype('datetime64[m]')
Out[572]: array('2019-11-01T09:17', dtype='datetime64[m]')
In [574]: arr.astype('datetime64[m]').astype(float)
Out[574]: array(26209997.)
In [575]: arr.astype('datetime64[D]')
Out[575]: array('2019-11-01', dtype='datetime64[D]')
In [577]: arr.astype('datetime64[D]').astype(int)
Out[577]: array(18201)
In [580]: arr.astype('datetime64[Y]')
Out[580]: array('2019', dtype='datetime64[Y]')
In [581]: arr.astype('datetime64[Y]').astype(int)
Out[581]: array(49)