我有道理
点=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-b1)2+(a2–
b2)2+…)
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])