在创建numpy数组时最后添加零项

时间:2014-01-22 15:26:33

标签: python numpy

从以下ipdb日志中可以看出, pre post 数组中添加了额外的零日期。 我怎样才能解决这个问题?为什么会这样呢?

ipdb> pre
(datetime.datetime(2013, 12, 31, 9, 58), 0, 1)

ipdb> post
(datetime.datetime(2013, 12, 31, 13, 15), 0, 1)

ipdb> RDT
RDT = [(COL_TIME, 'M8[s]'), (COL_STATUS, 'b'), (COL_MOBILE, 'b')]

ipdb> RMATCH
RMATCH = [(COL_PRE, RDT), (COL_POST, RDT)]

ipdb> ppre, ppost = np.array(pre, dtype=RDT), np.array(post, dtype=RDT)

ipdb> ppre
array((datetime.datetime(2013, 12, 31, 9, 58), 0, 1), 
      dtype=[('TIME', '<M8[s]'), ('STATUS', 'i1'), ('MOBILE', 'i1')])

ipdb> np.array([ppre, ppost], dtype=RMATCH)
array([ ((datetime.datetime(2013, 12, 31, 9, 58), 0, 1), (datetime.datetime(1970, 1, 1, 0, 0), 0, 0)),
       ((datetime.datetime(2013, 12, 31, 13, 15), 0, 1), (datetime.datetime(1970, 1, 1, 0, 0), 0, 0))], 
      dtype=[('PRE', [('TIME', '<M8[s]'), ('STATUS', 'i1'), ('MOBILE', 'i1')]), ('POST', [('TIME', '<M8[s]'), ('STATUS', 'i1'), ('MOBILE', 'i1')])])

1 个答案:

答案 0 :(得分:1)

您的上一个结果是包含两个元素的dtype RMATCH的数组。 ppreppost分别转换为此dtype。

如果您期望一个包含单个元素的数组,ppre填充RMATCH dtype的第一个字段,ppost填充第二个字段,请尝试以下操作:

np.array([(ppre, ppost)], dtype=RMATCH)

(注意额外的括号。)

我不确定这是np.array([ppre, ppost], dtype=RMATCH)没有引发错误的错误,疣或功能,而是用0填充未使用的字段。