指定numpy.datype以读取GPX跟踪点

时间:2014-10-14 18:53:19

标签: python arrays numpy user-defined-types recarray

我想将从GPX文件中提取的GPS轨迹表示为Numpy阵列。为此,每个元素都是" trackpoint"类型,包含一个日期时间和三个浮点数。

我正在尝试这样做(实际上,在使用某些XML库解析GPX文件之后):

import numpy

trkptType = numpy.dtype([('time', 'datetime64'),
                         ('lat', 'float32'),
                         ('lon', 'float32'),
                         ('elev', 'float32')])

a = numpy.array([('2014-08-08T03:03Z', '30', '51', '40'),
                 ('2014-08-08T03:03Z', '30', '51', '40')], dtype=trkptType)

但是我收到了这个错误:

ValueError: Cannot create a NumPy datetime other than NaT with generic units

我做错了什么,如何以有效的方式从某个列表中创建更大的数组呢?

1 个答案:

答案 0 :(得分:1)

As explained here,您必须使用至少datetime64[m](分钟),而不是datetime64,那么您的代码将起作用。您还可以使用低至秒或毫秒的日期时间,例如datetime64[s]datetime64[ms]

trkptType = np.dtype([('time', 'datetime64[m]'),
                      ('lat', 'float32'),
                      ('lon', 'float32'),
                      ('elev', 'float32')])