xarray - добавить новое измерение в массив данных и назначить координаты измерению - PullRequest
0 голосов
/ 31 января 2020

У меня есть объект DataArray с именем test. Он содержит переменную с именем FFDI 90TH PERCENTILE и измерениями широты и долготы.

import numpy as np
import pandas as pd
import xarray as xr

print(test)

<xarray.DataArray 'FFDI 90TH PERCENTILE' (latitude: 106, longitude: 193)>
array([[ 2.699949,  2.699277,  2.677113, ...,  3.353225,  3.381503,  3.392549],
       [ 2.7     ,  2.704608,  2.70228 , ...,  3.422083,  3.435692,  3.465664],
       [ 2.720069,  2.71194 ,  2.711843, ...,  3.5     ,  3.5     ,  3.501185],
       ...,
       [34.863322, 34.825574, 34.694171, ...,  8.599811,  8.50329 ,  8.815733],
       [34.728609, 35.180146, 35.203714, ...,  8.164053,  8.01015 ,  7.94335 ],
       [34.654186, 34.865241, 34.987067, ...,  7.814975,  7.644326,  7.925   ]])
Coordinates:
  * latitude   (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
  * longitude  (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0

У меня есть следующие times элементы:

times = pd.date_range("1972/12/01","2017/12/01",freq='D',closed='left')
time_da = xr.DataArray(times, [('time', times)])

Я хотел бы добавить новое измерение и назовите это time; и назначьте время, указанное выше, для размера time в качестве координат. Чтобы новый test DataArray выглядел так:

<xarray.DataArray 'FFDI 90TH PERCENTILE' (time: 16436, latitude: 106, longitude: 193)>

Я сделал следующие попытки с assign_coords и expand_dims. Ни один из них не работал.

Один:

test_assigned = test.assign_coords({'time': times.values})
TypeError: assign_coords() takes 1 positional argument but 2 were given

Два:

test_assigned = test.assign_coords(time=times.values)
ValueError: cannot add coordinates with new dimensions to a DataArray

1 Ответ

1 голос
/ 31 января 2020

Это вариант использования для expand_dims, который будет расширять массив вдоль нового измерения и назначать ему координату, если предоставлено:

result = test.expand_dims(time=time_da)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...