/ / Как да направите numpy recarray с типове данни (datetime, float)? - питон, numpy, recarray

Как да направите изцапано преподреждане с типове данни (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]]

и искам нумерен масив от записи, съответстващ на него. Изглежда, че трябва да мога да направя това:

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

или това

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

или може би това

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

Но всеки от тях връща грешка

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

или

TypeError: expected a readable buffer object

И така, как точно мога да го настроя, ако приемем, че това е възможно?

Отговори:

5 за отговор № 1

Можете да използвате кортежи вместо списъци за записите:

>> 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")])