【发布时间】:2020-08-20 21:01:37
【问题描述】:
我不明白为什么我的 numpy 数组将 numpy.datetime64 值存储在 dts 中作为 datetime.datetime 对象。
In [1]: import numpy as np
In [2]: import datetime
In [3]: arr = np.ones((3,), dtype='O')
In [4]: dts = np.array([np.datetime64(datetime.datetime.today())] * 2)
In [5]: dts
Out[5]:
array(['2020-08-20T14:44:03.945058', '2020-08-20T14:44:03.945058'],
dtype='datetime64[us]')
In [6]: arr[:2] = dts
In [7]: arr
Out[7]:
array([datetime.datetime(2020, 8, 20, 14, 44, 3, 945058),
datetime.datetime(2020, 8, 20, 14, 44, 3, 945058), 1], dtype=object)
我已经能够使用下面的代码解决这个问题,但我的实际情况更复杂,我更愿意使用上面的方法。
In [8]: arr = np.ones((3,), dtype='O')
In [9]: dts = np.array([np.datetime64(datetime.datetime.today())] * 2)
In [10]: for i in [0, 1]:
...: arr[i] = dts[i]
In [11]: arr
Out[11]:
array([numpy.datetime64('2020-08-20T14:53:20.878553'),
numpy.datetime64('2020-08-20T14:53:20.878553'), 1], dtype=object)
在给定arr 为object dtype 的情况下,为什么第一种方法不存储来自dts 的确切对象类型?
【问题讨论】:
-
你有点要求它
标签: python arrays numpy datetime