如何有效地计算数据帧中每一行与单个点之间的距离?

我有道理

点=np.数组([0.07852388,0.60007135,0.92925712,0.62700219,0.16943809,
0.34235233])

和一个数据帧

a b c d e f
0   0.025641    0.554686    0.988809    0.176905    0.050028    0.333333
1   0.027151    0.520914    0.985590    0.409572    0.163980    0.424242
2   0.028788    0.478810    0.970480    0.288557    0.095053    0.939394
3   0.018692    0.450573    0.985910    0.178048    0.118399    0.484848
4   0.023256    0.787253    0.865287    0.217591    0.205670    0.303030

我想计算熊猫数据帧中每一行到该特定点的距离

我试过了

将numpy导入为np
d_all=list()
对于索引,按比例缩放df_[cols_list]on 行。iterrows():
d=np.linalg.norm(质心np.array(list(row[cols_list]))
d_all+=[d]
df_标度['distance_cluster']=d_all

但我的解决方案非常慢(考虑到我也想计算与其他点的距离)

有没有办法更有效地进行计算

可以使用以下公式计算矢量化欧几里德距离(L2范数)

sqrt((a1-b12+(a2
b22+…)

df.sub(点,轴=1.pow(2.sum)(轴=1.pow(.5)
0    0.474690
1    0.257080
2    0.703857
3    0.503596
4    0.461151
数据类型:64

这将提供与当前代码相同的输出


或者,使用linalg.norm

np.linalg.norm(df.to_numpy()-点,轴=1)
#阵列([0.47468985,0.25707985,0.70385676,0.5035961,0.46115096])

发表评论