我正在为在不规则网格上生长的区域编写函数:在种子仓中开始,找到相邻的仓,并在满足某个要求时将它们包含在返回的仓索引集中。我希望这个要求是任意的,例如'> 2','> = 2','== 2'等等。所以语法是:
myregion = get_region(bin_coordinates, bin_values, seed_bin, '> 2')
将返回其值大于2的相邻区域的区域。
基本上我正在寻找与pandas库相同的功能,在查询HDF存储时可以使用以下内容:
store.select('dfq',where="A>0 or C>0")
我当然可以用if / else语句编写某种解析器来翻译'> 2'进入代码,但我想知道是否有更优雅的方式?
答案 0 :(得分:1)
使用lambda(匿名函数),例如lambda x:x> 2。将getregion声明为例如getregion(coordinates,values,testfun),并通过例如getregion(thesecoords,thesevalues,lambda x:x> 2),然后在getregion中使用例如如果testfun(值)。但是,选择比testfun更好的名称,描述True的结果意味着什么。
另一种方法是定义一些标准'评估函数并将其名称传递给getregion,例如
def gt2(x):
return (x>2)
为lambda示例声明getregion:
def getregion( coordinates, values, testfun ):
...
if testfun(x):
...
并像这样调用getregion:
getregion(thesecoordinates, thesevalues, gt2 )
HTH 巴尼