作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个包含 4124 个测量值的数组 nl
。每个都与 (lat
, lon
) 对相关联,指定测量发生的位置。这些位置未网格化,即它们未与规则间隔的值对齐。
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
我为 nl
创建一个 DataArray,指定 lat
和 lon
作为坐标:
nl = xr.DataArray(nl, coords={'lon':(['time'], lon), 'lat':(['time'], lat)}, dims=['time'])
我知道我可以将这些值分组到经度或纬度的 bin 中以对它们进行操作,例如
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 纬度的 2D bin 中的值分组,这样我就可以将结果显示为 map 。我不认为 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 与 dash 的集成。
最佳答案
按多维分组目前正在研究中,但在 xarray 中尚不可用。
与此同时,有一些非常可以容忍的解决方法。例如,如果您创建第三个坐标,它是 lat
和 lon
的组合,您可以按该坐标分组以生成一组 lat x lon
垃圾箱
这是一个简单的例子:
In [12]: da=xr.DataArray(np.random.rand(3,3,2), dims=['lat','lon','time'])
In [13]: da
Out[13]:
<xarray.DataArray (lat: 3, lon: 3, time: 2)>
array([[[ 0.69092373, 0.94961267],
[ 0.74086633, 0.22628054],
[ 0.08215398, 0.16806347]],
[[ 0.67699002, 0.86242477],
[ 0.54688503, 0.57882117],
[ 0.21120849, 0.68743872]],
[[ 0.43816928, 0.57682212],
[ 0.10402045, 0.78923986],
[ 0.53284326, 0.23705761]]])
Coordinates:
* lat (lat) int64 0 1 2
* lon (lon) int64 0 1 2
* time (time) int64 0 1
In [14]: da.stack(latlon=['lat','lon'])
Out[14]:
<xarray.DataArray (time: 2, latlon: 9)>
array([[ 0.69092373, 0.74086633, 0.08215398, 0.67699002, 0.54688503,
0.21120849, 0.43816928, 0.10402045, 0.53284326],
[ 0.94961267, 0.22628054, 0.16806347, 0.86242477, 0.57882117,
0.68743872, 0.57682212, 0.78923986, 0.23705761]])
Coordinates:
* time (time) int64 0 1
* latlon (latlon) object (0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) ...
In [15]: da.stack(latlon=['lat','lon']).groupby('latlon').mean()
Out[15]:
<xarray.DataArray (latlon: 9)>
array([ 0.8202682 , 0.48357344, 0.12510872, 0.76970739, 0.5628531 ,
0.44932361, 0.5074957 , 0.44663016, 0.38495044])
Coordinates:
* latlon (latlon) object (0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) ...
关于python-xarray - groupby_bins 在两个变量上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40465026/
假设我有一个包含 4124 个测量值的数组 nl。每个都与 (lat, lon) 对相关联,指定测量发生的位置。这些位置未网格化,即它们未与规则间隔的值对齐。 In [51]: whos Variab
我是一名优秀的程序员,十分优秀!