Xarray:在DataArray / Set中搜索值

时间:2018-02-22 21:09:11

标签: xarray

此StackOverflow Q / A:Find nearest value in numpy array

显示了如何在1D numpy数组中搜索值。什么是xarray相当于在沿坐标

的数据搜索中搜索接近目标值的值
import numpy as np
import xarray as xr

def f1(x, y, z):
    return 2*x+3*y+4*z

def f2(x, y, z):
    return x/2+y/3+z/4

TestArray=xr.Dataset({'f1Res':(['xCoord', 'yCoord', 'zcoord'], f1(*np.meshgrid(x, y, z))),
            'f2Res':(['xCoord', 'yCoord', 'zCoord'], f2(*np.meshgrid(x, y, z)))},
                  coords={'xCoord':x, 'yCoord':y, 'zCood':z})

TestArray

所以第一次搜索将是找到最接近目标值-41.2的f1Res数据集的位置

第二种方法是同时搜索f1Resf2Res的结果,以获得最接近目标值0.1的位置

第三种方法是搜索最接近3.15,-2.5的结果的xCoordyCoord并保持zCoord开启

1 个答案:

答案 0 :(得分:0)

所以这是我弄明白的黑客攻击;但要注意我没有广泛测试它。它只在Dataarray上进行过测试

```

def xarraySearch(Target,TargetVal):    """     ARGS:         目标:来自xarray的数据         TargetVal:搜索

的目标
Return:
    location array 
"""

Res=np.abs(Target-TargetVal).argmin()
ResLoc=np.unravel_index(Res, Target.shape)
return ResLoc

``` 我做了一些测试; http://xarray.pydata.org/en/stable/examples/weather-data.html

的初步测试