假设我有一个包含4124个测量值的数组nl
。每个都与指定测量发生位置的(lat
,lon
)对关联。这些位置没有网格化,即它们没有与规则间隔值对齐。关于两个变量的groupby_bins?
In [51]: whos
Variable Type Data/Info
---------------------------------
lat ndarray 4124: 4124 elems, type `float32`, 16496 bytes
lon ndarray 4124: 4124 elems, type `float32`, 16496 bytes
nl ndarray 4124: 4124 elems, type `int16`, 8248 bytes
我创建了一个DataArray中的nl
,指定lat
和lon
为坐标:
nl = xr.DataArray(nl, coords={'lon':(['time'], lon), 'lat':(['time'], lat)}, dims=['time'])
我知道我可以组经度和纬度的垃圾箱这些值来对它们进行操作,例如
nl_avg_lon = nl.groupby_bins('lon', np.r_[-180:190:10]).mean()
nl_avg_lat = nl.groupby_bins('lat', np.r_[-90:90:10]).mean()
我想要做的是在经度x纬度的二维分组中分组值,所以我可以显示结果作为地图。我不认为groupby_bins可以做到这一点,是否有另一种解决方案?
更新与例如:
这是我怎么会做什么,我想与numpy的正确:
latbins = np.r_[-90:100:10]
lonbins = np.r_[-180:190:10]
nsamples, xx, yy = np.histogram2d(lon, lat, bins=(lonbins, latbins))
nl_sum, xx, yy = np.histogram2d(lon, lat, bins=(lonbins, latbins), weights=nl)
nl_avg = nl_sum/nsamples
我想避免诉诸numpy的,以保持与前围xarray一体化。
我不知道我明白。你是否建议在新维度上连接'lat'和'lon'?或沿'nx'维度?在这两种情况下,我认为新创建的坐标尺寸与'nl'变量的尺寸不兼容。我误解了什么? –
请注意,'nl'变量*不是*二维的。有一个独特的维度(例如时间)。沿该维度的每个nl点都与纬度和经度相关联。在上面的'nl'例子中,'lat'和'lon'坐标是平行的,可以这么说。 –
刚刚添加了一个例子,这是否更有意义? – Maximilian