草庐IT

EM距离

全部标签

python - 如何在 Python 中快速估计点和双三次样条曲面之间的距离?

如何在Python中快速估计点与双三次样条曲面之间的距离?是否有我可以在SciPy、NumPy或其他一些包中利用的现有解决方案?我已经通过双三次插值定义了曲面:importnumpyasnpimportscipy.interpolate#Defineregulargridsurfacexmin,xmax,ymin,ymax=25,125,-50,50x=np.linspace(xmin,xmax,201)y=np.linspace(ymin,ymax,201)xx,yy=np.meshgrid(x,y)z_ideal=(xx**2+yy**2)/400z_ideal+=z_ideal+

python - 快速检查大型数据库的编辑距离相似性

我有一个包含350,000字符串的数据库,平均长度约为500。字符串不是由单词组成,它们基本上是字符的随机组合。我需要确保没有两个字符串过于相似,相似度定义为编辑距离除以字符串的平均长度。划分是因为较小的编辑距离更适合较小的字符串。如果出于性能原因使用不同的指标,这很好,但编辑距离是首选的基线指标。天真地,我们计算editdistance使用运行时O(a*b),其中a,b是两个字符串的长度。我们对所有n^2对执行此操作,这给出了O(n^2*a*b)的总体运行时间,对于n=显然太大了350,000,a,b=500。数据库采用从csv文件读取的Python列表形式。如果可能的话,我想以Py

python - python中曲线的距离矩阵

我有一组定义为二维数组的曲线(点数、坐标数)。我正在使用Hausdorff距离为他们计算距离矩阵。我当前的代码如下。不幸的是,对于500-600条曲线,每条曲线都有50-100个3D点,它太慢了。有没有更快的方法?defdistanceBetweenCurves(C1,C2):D=scipy.spatial.distance.cdist(C1,C2,'euclidean')#nonesymmetricHausdorffdistancesH1=np.max(np.min(D,axis=1))H2=np.max(np.min(D,axis=0))return(H1+H2)/2.defdis

python - 使用多段三次贝塞尔曲线和距离以及曲率约束逼近数据

我有一些地理数据(下图将河流的路径显示为红点),我想使用多段三次贝塞尔曲线对其进行近似。通过关于stackoverflow的其他问题here和here我从“GraphicsGems”中找到了PhilipJ.Schneider的算法。我成功地实现了它,并且可以报告说,即使有数千个点,它也非常快。不幸的是,这种速度有一些缺点,即拟合做得很草率。考虑下图:红点是我的原始数据,蓝线是施耐德算法创建的多段贝塞尔曲线。如您所见,该算法的输入是一个容差,该容差至少与绿线指示的一样高。然而,该算法创建了一个具有太多急转弯的贝塞尔曲线。您也可以在图像中看到这些不必要的急转弯。很容易想象一条贝塞尔曲线对于

python - 在 Python 中矢量化 Haversine 距离计算

我正在尝试使用Haversine计算经纬度标识的一长串位置的距离矩阵采用两个坐标对元组来产生距离的公式:defhaversine(point1,point2,miles=False):"""Calculatethegreat-circledistancebewteentwopointsontheEarthsurface.:input:two2-tuples,containingthelatitudeandlongitudeofeachpointindecimaldegrees.Example:haversine((45.7597,4.8422),(48.8567,2.3508)):ou

python - Python中计算余弦距离的优化方法

我写了一个方法来计算两个数组之间的余弦距离:defcosine_distance(a,b):iflen(a)!=len(b):returnFalsenumerator=0denoma=0denomb=0foriinrange(len(a)):numerator+=a[i]*b[i]denoma+=abs(a[i])**2denomb+=abs(b[i])**2result=1-numerator/(sqrt(denoma)*sqrt(denomb))returnresult在大型阵列上运行它可能会非常慢。这种方法是否有运行速度更快的优化版本?更新:我已经尝试了迄今为止所有的建议,包括s

python - Django - 我怎样才能找到两个位置之间的距离?

我有一些用户在我的Django应用程序中注册,我希望能够根据他们的邮政编码简单地计算出两个用户之间的地理距离,然后根据该列表对列表进行排序。我想这个功能没有内置到Django中。我在查看一些选项时偶然发现了geodjango,这似乎对我的需求来说有点过分了。 最佳答案 这是对@SvenMarnach在(当前已接受的)答案中发布的代码的粗暴评论。zip项目网站的原始代码,缩进由我编辑:frommathimport*defcalcDist(lat_A,long_A,lat_B,long_B):distance=(sin(radians(

python - 识别具有最小欧氏距离的点

我有一个n维点的集合,我想找出哪2个最接近。我能想到的最好的二维是:fromnumpyimport*myArr=array([[1,2],[3,4],[5,6],[7,8]])n=myArr.shape[0]cross=[[sum((myArr[i]-myArr[j])**2),i,j]foriinxrange(n)forjinxrange(n)ifi!=j]printmin(cross)给出[8,0,1]但这对于大型数组来说太慢了。我可以对其应用什么样的优化?相关:EuclideandistancebetweenpointsintwodifferentNumpyarrays,notw

python - 距离矩阵的并行构造

我致力于对大量多维向量进行分层凝聚聚类,我注意到最大的瓶颈是距离矩阵的构建。此任务的简单实现如下(此处为Python):'''v=anarray(N,d),whererowsaretheobservationsandcolumnsthedimensions'''defcreate_dist_matrix(v):N=v.shape[0]D=np.zeros((N,N))foriinrange(N):forjinrange(i+1):D[i,j]=cosine(v[i,:],v[j,:])#scipy.spatial.distance.cosine()returnD我想知道为这个例程添加一

python - 在排序聚类算法中实现一个有效的图数据结构来保持聚类距离

我正在尝试实现排序聚类hereisalinktothepaper(这是一种凝聚聚类)算法从头开始。我已经通读了这篇论文(多次)并且我有一个正在运行的实现,尽管它比我预期的要慢很多。这是一个link到我的Github,其中有下载和运行JupyterNotebook的说明。算法:Algorithm1Rank-OrderdistancebasedclusteringInput:  Nfaces,Rank-Orderdistancethresholdt.Output:  AclustersetCandan“un-grouped”clusterCun.1:InitializeclustersC=