2012-04-05 6 views
5

Hãy nói rằng tôi có một số dữ liệu đơn giảnLàm thế nào để thực hiện một recarray numpy với datatypes (datetime, float)?

y = [[datetime.datetime(2012,1,1,1,1), 2.1], 
    [datetime.datetime(2012,1,1,1,2), -3.1], 
    [datetime.datetime(2012,1,1,1,3), 0.1]] 

và tôi muốn có một mảng lục NumPy tương ứng với nó. Có vẻ như tôi phải có khả năng để làm điều này:

np.rec.array(y, dtype=[('timestamp', object),('x','f')]) 

hay này

np.rec.array(y, dtype=[('timestamp', '|O8'),('x','f')]) 

hoặc có lẽ đây

np.rec.array(y, dtype=[('timestamp', 'V'),('x','f')]) 

Nhưng mỗi người trong số họ trả về một lỗi, hoặc

ValueError: Setting void-array with object members using buffer. 

hoặc

TypeError: expected a readable buffer object 

Vì vậy, làm thế nào chính xác tôi có thể thiết lập điều này, giả sử nó thậm chí có thể?

Trả lời

5

Bạn có thể sử dụng các bộ thay vì danh sách cho các hồ sơ:

>> y = [(datetime.datetime(2012,1,1,1,1), 2.1), 
...  (datetime.datetime(2012,1,1,1,2), -3.1), 
...  (datetime.datetime(2012,1,1,1,3), 0.1)] 
>> np.rec.array(y, dtype=[('timestamp', object), ('x','f')]) 
rec.array([(datetime.datetime(2012, 1, 1, 1, 1), 2.0999999046325684), 
      (datetime.datetime(2012, 1, 1, 1, 2), -3.0999999046325684), 
      (datetime.datetime(2012, 1, 1, 1, 3), 0.10000000149011612)], 
dtype=[('timestamp', '|O8'), ('x', '<f4')]) 
+0

hút thuốc lá Thánh, nó là đơn giản. Cảm ơn! –