此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
数据集的位置
第二种方法是同时搜索f1Res
和f2Res
的结果,以获得最接近目标值0.1的位置
第三种方法是搜索最接近3.15,-2.5的结果的xCoord
和yCoord
并保持zCoord
开启
答案 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
的初步测试