python - 欧几里得距离 - 循环函数
问题描述
我使用以下公式计算了点 (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
解决方案
这是想要做的吗?您通常不需要对 pandas 数据使用显式循环。列上的算术运算将应用于数据框中的每一行。这称为“矢量化操作”。
data.distance = (
(data.NORMALIZED_GPA - 0.5)**2 +
(data.NORMALIZED_SAT - 0.5)**2
)**0.5
推荐阅读
- java - Populate Jtable with vector
- java - Android TV 模拟器无法识别媒体键事件
- php - Login Page is refreshing regardless of if the correct login information is entered
- mysql - Docker MySQL 8 如何设置 --secure-file-priv
- oracle - ODI 11g Interface SQL Data to Multiple Flat Files
- python - 如何在数据帧匹配中获取第一个索引
- postgresql - Postgres 用于截断外键标识符的具体算法是什么?
- sed - 使用 sed/awk linux bash 替换字符串
- java - 泛型 - 不能用 T 扩展 Base 为 T 返回 Base
- docker - Ubuntu 14.04 几分钟后破坏了 docker 网络