#python #arrays #slice #python-xarray
Вопрос:
У меня есть массив данных python формы, размеров и координат —
month_means.shape
Out[212]: (12, 141, 269)
month_means.dims
Out[213]: ('month', 'latitude', 'longitude')
Coordinates:
number int32 0
step timedelta64[ns] 00:00:00
surface float64 0.0
* latitude (latitude) float64 58.0 57.75 57.5 57.25 ... 23.5 23.25 23.0
* longitude (longitude) float64 -130.0 -129.8 -129.5 ... -63.5 -63.25 -63.0
* month (month) int64 1 2 3 4 5 6 7 8 9 10 11 12
Мне нужно извлечь или нарезать массив данных для «месяца» == 9, и я использую этот код ниже, но я получаю пустой результат (shape = (0,141,269)) и не могу понять, почему, потому что он извлекается для других месяцев, таких как «5» или «6» (здесь не показано)-
month_means.loc[dict(month=slice('9','9'))]
Out[214]:
<xarray.DataArray (month: 0, latitude: 141, longitude: 269)>
array([], shape=(0, 141, 269), dtype=float64)
Coordinates:
number int32 0
step timedelta64[ns] 00:00:00
surface float64 0.0
* latitude (latitude) float64 58.0 57.75 57.5 57.25 ... 23.5 23.25 23.0
* longitude (longitude) float64 -130.0 -129.8 -129.5 ... -63.5 -63.25 -63.0
* month (month) int64
Как ни странно, если я использую этот код для извлечения ‘month’ == 7, он дает следующий ответ ниже:
month_means.loc[dict(month=slice('7','7'))]
Coordinates:
number int32 0
step timedelta64[ns] 00:00:00
surface float64 0.0
* latitude (latitude) float64 58.0 57.75 57.5 57.25 ... 23.5 23.25 23.0
* longitude (longitude) float64 -130.0 -129.8 -129.5 ... -63.5 -63.25 -63.0
* month (month) int64 7 8 9 10 11 12
Спасибо,
Комментарии:
1. похоже, вы объединяете целые числа и строки в качестве значений координат. Я не уверен, что полностью понимаю вопрос, но я полагаю, что вы хотите использовать
.sel
, а не.loc
(см. Документы xarray.pydata.org/en/stable/generated/xarray . DataArray.sel.html ). Я считаю, что вы хотите сделать этоmonth_means.sel(month=9)