#netcdf #python-xarray
Вопрос:
Ниже показано, как я пытался вычислить ETP в NetCDF с помощью xarray_ufunc.
# stack the lat and lon dimensions into a new dimension named point, so at each lat/lon
# we'll have a time series for the geospatial point, and group by these points
tmin_da = ds.tmin.stack(point=('lat', 'lon')).groupby('point')
tmax_da = ds.tmax.stack(point=('lat', 'lon')).groupby('point')
tmean_da = ds.tmean.stack(point=('lat', 'lon')).groupby('point')
# apply the SPI function to the data array
ds = xr.apply_ufunc(eto.eto_hargreaves, tmin_da, tmax_da, tmean_da, latitude_degrees = np.linspace(23.125 , 49.125, 14))
Ошибка кода Значение истинности массива, содержащего более одного элемента, неоднозначно. Используйте.any() или. all()
Есть какие-либо предложения о том, какими должны быть входные данные, или другой простой метод?
Комментарии:
1. Вы должны поделиться кодом функции:
eto.eto_hargreaves
похоже, что вы создаете условное выражение, которое не соответствует массивам, которые вы передаете функции.2. Сценарий по следующей ссылке включает
eto.eto_hargreaves
функцию (строка 304) и другие функции, необходимые для вычисления, с соответствующим описанием. Ссылка3. Вы проверили использование функции
eto.eto_hargreaves(tmin_da.values, tmax_da.values, tmean_da.values)
?4. @dl.метео Спасибо за рекомендацию! Да, я сделал это, но это вызывает ту же ошибку. Однако я применил все функции в нем отдельно и получил свои результаты. Это занимает некоторое время, но все равно является хорошей альтернативой.