kd树 python实现_python kd树 搜索 代码

1 importnumpy as np2 from numpy importarray3 classdecisionnode:4 def __init__(self,value=None,col=None,rb=None,lb=None):5 self.value=value6 self.col=col7 self.rb=rb8 self.lb=lb9

10 #读取数据并将数据转换为矩阵形式

11 defreaddata(filename):12 data=open(filename).readlines()13 x=[]14 for line indata:15 line=line.strip().split('\t')16 x_i=[]17 for num inline:18 num=float(num)19 x_i.append(num)20 x.append(x_i)21 x=array(x)22 returnx23

24 #求序列的中值

25 defmedian(x):26 n=len(x)27 x=list(x)28 x_order=sorted(x)29 return x_order[n//2],x.index(x_order[n//2])30

31 #以j列的中值划分数据,左小右大,j=节点深度%列数

32 def buildtree(x,j=0):33 rb=[]34 lb=[]35 m,n=x.shape36 if m==0: returnNone37 edge,row=median(x[:,j].copy())38 for i inrange(m):39 if x[i][j]>edge:40 rb.append(i)41 if x[i][j]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值