首页 > 解决方案 > 欧几里得距离 - 循环函数

问题描述

我使用以下公式计算了点 (0.5,0.5) 的 3-nearest-neightbor:

## for the first record , here we show how to calculate the distance
distance2=(data.iloc[0,0]-0.5)**2+(data.iloc[0,1+1]-0.5)**2
distance2
distance=np.sqrt(distance2)
distance
data.iloc[0,3]=distance

数据集中有 24 条记录。我使用上述公式计算了第一行(GPA - SAT)的距离 .156433。如何使用循环功能对另外 23 行重复相同的操作:

         NORMALIZED_GPA   NORMALIZED_SAT  ACCEPT_NUM   distance
0           0.3500          0.4556           1         0.156433
1           0.6833          0.2889           1         0.000000
2           0.4111          0.7889           1         0.000000
3           0.3722          0.7111           1         0.000000
4           0.7000          1.0000           1         0.000000
5           1.0000          0.5444           1         0.000000

标签: python

解决方案


这是想要做的吗?您通常不需要对 pandas 数据使用显式循环。列上的算术运算将应用于数据框中的每一行。这称为“矢量化操作”。

data.distance = (
    (data.NORMALIZED_GPA - 0.5)**2 + 
    (data.NORMALIZED_SAT - 0.5)**2
)**0.5

推荐阅读