我有一个日期时间times
数组,我将它们附加到一个空的numpy数组,但首先我将它们转换为unix时间。转换工作正常,但是当我将它们添加到数组中时,我会得到像e-310这样的疯狂小值
#times = [Array of datetimes]
time_unix = np.empty(len(times))
for t in times:
temp_time = time.mktime( t.timetuple() )
np.append(time_unix, temp_time)
结果
对于日期时间:2015-08-05 00:27:00
time_unix[0]
应该是什么:1438734420.0
time_unix[0]
实际上是什么:6.92520780368e-310
答案 0 :(得分:4)
如果要插入值,则不应使用np.append
。您所看到的是np.empty
- 单元格(可能是任何内容)的结果。
将您的循环更改为:
for idx, t in enumerate(times):
...
time_unix[idx] = temp_time
答案 1 :(得分:2)
对于数组的迭代定义,从列表开始,并向其追加值。将数组放在最后。 np.append
始终给初学者带来问题,应该被禁止。
In [393]: times =[]
In [394]: for i in range(3):
...: times.append('2015-08-%02d 00:27:00'%(i+5))
...:
In [395]: times
Out[395]: ['2015-08-05 00:27:00', '2015-08-06 00:27:00', '2015-08-07 00:27:00']
In [396]: dates = np.array(times, np.datetime64)
In [397]: dates
Out[397]: array(['2015-08-05T00:27:00', '2015-08-06T00:27:00', '2015-08-07T00:27:00'], dtype='datetime64[s]')
了解np.datetime64
的用法。它使数据的数组操作更容易。