小编mac*_*h81的帖子

向量化以计算许多距离

我是numpy / pandas和矢量化计算的新手。我正在执行数据任务,其中有两个数据集。数据集1包含一个经度和纬度的位置列表以及一个变量A。数据集2还包含一个经度和纬度的位置列表。对于数据集1中的每个位置,我想计算其到数据集2中所有位置的距离,但我只想获得数据集2中小于变量A的值的位置计数。数据集非常大,因此我需要使用向量化运算来加快计算速度。

例如,我的数据集1可能如下所示:

id lon    lat   varA
1  20.11 19.88  100
2  20.87 18.65  90
3  18.99 20.75  120
Run Code Online (Sandbox Code Playgroud)

我的数据集2可能如下所示:

placeid lon lat 
a       18.75 20.77
b       19.77 22.56
c       20.86 23.76
d       17.55 20.74 
Run Code Online (Sandbox Code Playgroud)

然后对于数据集1中的id == 1,我想计算其到数据集2中所有四个点(a,c,c,d)的距离,并且我想知道有多少距离小于对应的距离varA的值。例如,计算出的四个距离为90、70、120、110,而varA为100。则该值应为2。

我已经有一个向量化函数来计算两对坐标之间的距离。假设函数(haversine(x,y))正确实现,我有以下代码。

dataset2['count'] = dataset1.apply(lambda x: 
haversine(x['lon'],x['lat'],dataset2['lon'], dataset2['lat']).shape[0], axis 
= 1)
Run Code Online (Sandbox Code Playgroud)

但是,这给出的是行的总数,但不能满足我的要求。

谁能指出我如何使代码正常工作?

python numpy vectorization pandas

5
推荐指数
1
解决办法
566
查看次数

标签 统计

numpy ×1

pandas ×1

python ×1

vectorization ×1