2013-06-09 3 views
1

Я пытаюсь прочитать XML-файл в массив записей numpy. Время находится в Zulu time, u'2013-06-06T17:47:38Z',, а остальные столбцы - поплавки. Времена и поплавки могут быть преобразованы в массивы numpy, но если я попытаюсь сделать запись, это не сработает различными способами (что, вероятно, указывает на то, что я не знаю, как сделать recordarrays):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'} 

Каков правильный подход для создания recordarray, включая время?

(keys список, datadict и dtype являются dicts)

+0

Возможный дубликат [numpy datetime64 в recarray] (http://stackoverflow.com/questions/16618499/numpy-datetime64-in-recarray) – askewchan

+0

Я также вспоминаю комментарий, проходящий по списку matplotlib, в котором типы numpy + datetime были все еще в потоке/багги. – tacaswell

+0

@askewchan: Я не думаю, что это дубликат, так как мое решение заключалось в том, чтобы * не использовать 'datetime [D]'. – keflavich

ответ

1

Упс, понял это с помощью 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' 

но datetime[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]) 
Смежные вопросы