Как создать функцию подсчета для массива, который поддерживает время и местоположение точек (python) - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть два файла netcdf, которые я использовал для расчета Humidex в районе Хьюстона. Оттуда мне нужно найти способ подсчитать количество дней в каждом лат / лоне, в которых есть дни, которые соответствуют определенному порогу (41). Затем мне нужно построить пространственную карту числа подсчета по региону, чтобы я мог сравнить количество чрезвычайно жарких дней в каждой точке региона. Я использовал xarray.where, чтобы выделить количество дней с этим порогом, но когда я применяю функцию подсчета, я теряю свои переменные времени и широты и долготы, и просто получаю вывод общего числа точек данных в этом порог.

humidex - это расчет двух разных файлов netcdf, он имеет переменные широты и долготы

>>> hotday = xr.DataArray(humidex)
>>> hotday.where(hotday >=41)


<xarray.DataArray 'tasmax' (lat: 960, lon: 1920)>
array([[nan, nan, nan, ..., nan, nan, nan],
       [nan, nan, nan, ..., nan, nan, nan],
       [nan, nan, nan, ..., nan, nan, nan],
       ...,
       [nan, nan, nan, ..., nan, nan, nan],
       [nan, nan, nan, ..., nan, nan, nan],
       [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
Coordinates:
  * lat      (lat) float64 -89.86 -89.67 -89.48 -89.3 ... 89.3 89.48 89.67 89.86
  * lon      (lon) float64 0.0 0.1875 0.375 0.5625 ... 359.2 359.4 359.6 359.8
    height   float64 2.0

>>>for ii in hotday:
  >>> counting=xr.DataArray.count(ii)
>>>counting

<xarray.DataArray 'tasmax' ()>
array(1920)
Coordinates:
    lat      float64 89.86
    height   float64 ...

Надеюсь, это имеет смысл, я все еще новичок в кодировании, и это действительно бросило я.

1 Ответ

0 голосов
/ 24 февраля 2020

Добро пожаловать на SO. Есть множество способов решить вашу проблему.

Вот один из предложенных методов:

import xarray as xr
data = xr.tutorial.open_dataset('air_temperature') 

high_temps = xr.where(data > 300, 1, 0) #set all temps over 300K = 1; others to 0
summed_temps = high_temps.sum(dim='time')

Затем можно напрямую построить карту тепла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...