Скажем, у меня есть следующий 2d-массив
>>> import numpy as np
>>> budgets = np.array([
[np.nan, 450.],
[500. , 100.],
[np.nan, 900.],
])
чьи ценности позиционируются так
>>> coords = [
('name' , ['Jack_teen' , 'John_adult', 'John_teen']), # over rows
('hobby', ['books', 'bicyle']), # over columns
]
Используя xarray, я могу создать двумерный массив с метками, выполняя
>>> import xarray as xr
>>> x = xr.DataArray(budgets, coords=coords)
Таким образом, когда Джон был подростком, он не любил книги, что видно, если получить его бюджет в то время.
>>> x.sel(name='John_teen', hobby='books')
<xarray.DataArray ()>
array(nan)
Coordinates:
name |S10 'John_teen'
hobby |S6 'books'
Что изменилось с возрастом
>>> x.sel(name='John_adult', hobby='books')
<xarray.DataArray ()>
array(500.0)
Coordinates:
name |S10 'John_adult'
hobby |S6 'books'
Мой вопрос:
Как бы вы сделали, чтобы превратить этот 2dl-массив в 3dl-массив, который учитывает новое измерение, называемое age
(чьи координаты, таким образом, будут ['adult','teen'])
, при упрощении координат измерения name
?
Обратите внимание, что координаты name
всегда структурированы с разделительным подчеркиванием, я имею в виду NAME_AGE. Конечно, вы начинаете делать это с x
.
Существуют ли для этого методы, встроенные в xarray? Или, по крайней мере, какой подход самый быстрый / дешевый?