У меня есть массив 2D NumPy из структур:Построить панду панель из 2D структурированного массива NumPy
arr = np.zeros((3,5), [('x',int), ('y',float)])
То есть:
array([[(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0)],
[(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0)],
[(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0)]],
dtype=[('x', '<i8'), ('y', '<f8')])
Я хочу создать панду панель из него. Я попробовал очевидное:
pd.Panel(arr)
ValueError: The number of dimensions required is 3, but the number of dimensions of the ndarray given was 2
Потом я обнаружил эту безобразную груду:
pd.Panel(dict(enumerate(pd.DataFrame(a) for a in arr)))
Он производит:
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 5 (major_axis) x 2 (minor_axis)
Items axis: 0 to 2
Major_axis axis: 0 to 4
Minor_axis axis: x to y
Этот "работает", но очень неэффективно и уродство ,
Как такие панели должны быть построены?
Edit: я представил вопрос здесь: https://github.com/pandas-dev/pandas/issues/14511
Какова конечная форма вы после? что-то вроде 'pd.Panel (arr.reshape ((1, arr.shape [0], arr.shape [1])))' или 'pd.Panel (arr.reshape ((arr.shape [0], arr .shape [1], 1))) '? – EdChum
@EdChum: Окончательная форма, заданная отвратительной кучей, которую я написал в вопросе, в порядке. Код, который вы написали, создает Панели, но они полны NaN вместо данных из 'arr' !! Я обновлю вопрос, чтобы показать результаты отвратительной кучи. –