2014-01-22 41 views
0

從以下ipdb日誌中可以看到,額外的零日期被添加到之前之後數組。 我該如何解決這個問題?爲什麼發生這種情況?在創建numpy數組時末尾添加零項

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

你的最後結果是具有含兩個元件D型細胞RMATCH陣列。 ppreppost各自被轉換成此dtype。

如果你希望用一個元素的數組,ppre填充RMATCH D型的第一場和ppost填充第二,試試這個:

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

(注意額外的括號。)

我不確定它是否是一個bug,疣或np.array([ppre, ppost], dtype=RMATCH)沒有提出錯誤的功能,而是用0填充未使用的字段。

+0

它工作。謝謝。 –