【发布时间】:2022-11-17 07:42:41
【问题描述】:
我有一个 Xarray DataArray,其值超过矩形 2D 网格,以及来自 pandas Dataframe 中包含的该网格的任意子集的点列表(坐标值对)。
如何屏蔽掉网格坐标未出现在列表点中的 DataArray 中的值(即设置为 NaN)?
例如考虑 DataArray
In [35]: da = xr.DataArray(data=np.random.randint(10, size=(5, 6)), coords={"x": np.linspace(0, 10, 5), "y": np.linspace(0, 12, 6)})
In [36]: da
Out[36]:
<xarray.DataArray (x: 5, y: 6)>
array([[6, 0, 2, 3, 9, 8],
[7, 6, 4, 8, 5, 8],
[7, 4, 4, 5, 4, 7],
[9, 8, 8, 1, 8, 0],
[8, 9, 4, 3, 3, 6]])
Coordinates:
* x (x) float64 0.0 2.5 5.0 7.5 10.0
* y (y) float64 0.0 2.4 4.8 7.2 9.6 12.0
和数据框
In [44]: coords = pd.DataFrame([[2.5, 4.8], [2.5, 7.2], [5.0, 12.0], [7.5, 7.2], [10.0, 2.4]], columns=["x_coord", "y_coord"])
In [45]: coords
Out[45]:
x_coord y_coord
0 2.5 4.8
1 2.5 7.2
2 5.0 12.0
3 7.5 7.2
4 10.0 2.4
那么我希望输出是:
Out[84]:
<xarray.DataArray (x: 5, y: 6)>
array([[nan, nan, nan, nan, nan, nan],
[nan, nan, 4., 8., nan, nan],
[nan, nan, nan, nan, nan, 7.],
[nan, nan, nan, 1., nan, nan],
[ 8., nan, nan, nan, nan, nan]])
Coordinates:
* x (x) float64 0.0 2.5 5.0 7.5 10.0
* y (y) float64 0.0 2.4 4.8 7.2 9.6 12.0
【问题讨论】:
标签: mask netcdf python-xarray