【发布时间】:2013-11-21 01:56:41
【问题描述】:
我正在学习 python,所以请多多包涵。我一直在尝试获取日期时间 变量放入一个numpy数组,但一直无法弄清楚如何。稍后我需要计算每个索引的时间差异,所以我不知道是否应该将 datetime 变量放入数组中,或者将其转换为另一种数据类型。我得到错误:
'NoneType' object does not support item assignment
我的 dtype 变量构造正确吗? This 没有提到日期时间类型。
import numpy as np
from liblas import file
f = file.File(project_file, mode = 'r')
num_points = int(f.__len())
# dtype should be [float, float, float, int, int, datetime]
dt = [('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('i', 'u2'), ('c', 'u1'), ('time', 'datetime64')]
xyzict = np.empty(shape=(num_points, 6), dtype = dt)
# Load all points into numpy array
counter = 0
for p in f:
newrow = [p.x, p.y, p.z, p.i, p.c, p.time]
xyzict[counter] = newrow
counter += 1
提前致谢
编辑:我应该注意我计划在继续之前按日期对数组进行排序。
p.time 格式如下:
>>>p.time
datetime.datetime(1971, 6, 26, 19, 37, 12, 713269)
>>>str(p.time)
'1971-06-26 19:37:12.713275'
【问题讨论】:
-
你能把
project_file的前几行发给我们看看吗?可能有更好的方法来解决这个问题,但这取决于日期的格式等。 -
project_file 实际上是一个 LAS 文件。我以为有更好的方法。如果有帮助,我将使用 p.time 编辑我的帖子。
-
哦,那个编辑有帮助:尝试使用
'datetime64[us]'作为你的 dtype。 -
第 14 行给了我错误 TypeError: expected a readable buffer object
-
哦,为此尝试将
newrow设为元组而不是列表。
标签: arrays python-2.7 numpy python-datetime