我正在尝试将 XML
文件读入 NumPy
记录数组。时间采用祖鲁时间 u'2013-06-06T17:47:38Z'
,其他列为 float
。
时间和 float
都可以转换为NumPy
数组。但是,如果我尝试创建一个 recordarray
,它会以多种方式失败(这可能表明我不知道如何创建记录数组):
In [124]: dataarr = np.array(zip(*[datadict[k] for k in keys]),
.....: dtype=[(k,dtypes[k]) for k in keys])
Traceback (most recent call last):
File "<ipython-input-124-d59123796cfa>", line 2, in <module>
dtype=[(k,dtypes[k]) for k in keys])
ValueError: Cannot create a NumPy datetime other than NaT with generic units
In [125]: dataarr = np.array([datadict[k] for k in keys],
dtype=[(k,dtypes[k]) for k in keys])
Traceback (most recent call last):
File "<ipython-input-125-ee9077bf1961>", line 2, in <module>
dtype=[(k,dtypes[k]) for k in keys])
TypeError: expected a readable buffer object
In [126]: dataarr = np.array([datadict[k] for k in keys],
dtype=[dtypes[k] for k in keys])
Traceback (most recent call last):
File "<ipython-input-126-a456052bdfd4>", line 2, in <module>
dtype=[dtypes[k] for k in keys])
TypeError: data type not understood
In [127]: dtypes
Out[127]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64'}
创建包含时间的记录数组
的正确方法是什么?
(keys
是一个列表,datadict
和 dtype
是字典)
最佳答案
哎呀,用 numpy datetime64 in recarray 算出来了
我尝试使用datetime[D]
,但失败了:
In [19]: dtypes
Out[19]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64[D]'}
In [20]: dataarr = np.array(zip(*[datadict[k] for k in keys]),
dtype=[(k,dtypes[k]) for k in keys])
Traceback (most recent call last):
File "<ipython-input-20-d59123796cfa>", line 2, in <module>
dtype=[(k,dtypes[k]) for k in keys])
TypeError: Cannot cast NumPy timedelta64 scalar from metadata [s] to [D] according to the rule 'same_kind'
但是日期时间[s]
有效:
In [22]: dtypes
Out[22]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64[s]'}
In [23]: dataarr = np.array(zip(*[datadict[k] for k in keys]),
dtype=[(k,dtypes[k]) for k in keys])
关于python - numpy 记录数组与时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17014497/