从坐标列表列表中选择并在 Xarray 中求和

问题描述

我正在使用 Xarray 处理定义在三角形上的非结构化海洋网格。我在每个三角形的节点上定义了数据,并想在脸上找到总和。使用 Xarray,我有一个如下所示的数组:

ds = xr.open_dataset(...)
ds

<xarray.DataArray 'w' (nod2: 3140,nz: 48)>
dask.array<transpose,shape=(3140,48),dtype=float32,chunksize=(3140,1),chunktype=numpy.ndarray>
Coordinates:
  * nod2     (nod2) int64 0 1 2 3 4 5 6 7 ... 3133 3134 3135 3136 3137 3138 3139
  * nz       (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03

此外,我有一个三角形节点列表:

[[   0   11    1]
 [   1   11    9]
 [   1    9    8]
 ...
 [3138 3135 3139]
 [3138 3134 3133]
 [3139 3136 3137]]

形状:

(5839,3)

在 numpy 中,我可以这样做(也可以进行一些缩放):

elem_mean = np.sum(w[mesh.elem.T,:],axis=0) / 3.0 * 1.0e-6

在 Xarray 中会是什么样子?

目标最终是删除任何需要直接打开数组的 numpy 代码,并使所有内容都在 dask 中运行,这将允许我们将计算连接到例如SLURM。

谢谢! 保罗

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)