如何解决为 N 个点插入一个 xarray DataArray 并获取使用 dask
我有一个 DataArray
,坐标为 x
、y
和 t
。我还有一个 N
坐标列表,我想进行插值以获得 N
插值列表。但是,我不太知道如何使用 xarray
做到这一点,同时仍然利用 dask 的并行性。这是一个带有随机值的示例:
import numpy as np
import xarray as xr
x = np.linspace(0,1,10)
datar = xr.DataArray(np.random.randn(10,10,10),dims=('x','y','t'),coords=dict(x=x,y=x,t=x))
datar = datar.chunk(dict(t=1))
points = np.array([(0.1,0.1,0.1),(0.2,0.3,0.3),(0.6,0.6,0.6),])
ivals = []
for point in points:
x0,y0,t0 = point
interp_val = datar.interp(x=x0,y=y0,t=t0)
ivals.append(float(interp_val))
print(ivals)
这给了我 [-1.7047738779949937,0.9568015637947849,0.04437392968785547]
的正确结果。
如果我天真地将列表传递给插值函数,我会得到一个 3 立方矩阵:
In [35]: x0s,y0s,t0s = points.T
...: print(datar.interp(x=x0s,y=y0s,t=t0s))
...:
<xarray.DataArray (x: 3,y: 3,t: 3)>
dask.array<dask_aware_interpnd,shape=(3,3,3),dtype=float64,chunksize=(3,chunktype=numpy.ndarray>
Coordinates:
* x (x) float64 0.1 0.2 0.6
* y (y) float64 0.1 0.3 0.6
* t (t) float64 0.1 0.3 0.6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。