python - 如何使用数据类型(datetime,float)制作一个 numpy recarray?

标签 python numpy recarray

假设我有一些简单的数据

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

我想要一个与之对应的 numpy 记录数组。看来我应该能够做到这一点:

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

那么,假设它是可能的,我该如何设置它呢?

最佳答案

您可以使用元组代替记录列表:

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

关于python - 如何使用数据类型(datetime,float)制作一个 numpy recarray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032809/

相关文章:

python - Nohup 在 Ubuntu ec2 中运行 selenium web scraper

Python:如何为字典分配一个长度不同的列表的值?

python - 在转换为 numpy 重新数组时处理 None 值

python 删除重复项

python - 在 Python 3 中对两个列表进行排序时如何忽略任何空格或空格?

python - 在 Cython 中将复杂的 numpy 数组传递给 C++

python - 为极坐标散点图数据点添加颜色

python - 使用 wave(不是 scipy.io.wavfile)模块将 numpy 数组写入缓冲区中的 wave 文件

python - 指定 numpy.datype 来读取 GPX 轨迹点

python - 子类化 numpy ndarray 问题