You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算CSV文件每行数据与目标向量的欧氏距离并解决运行报错

代码错误修复与实现方案

原代码错误列表

  • 库名拼写错误:import NumPy as np应改为import numpy as np,Python标准库名大小写敏感
  • 变量命名非法:Target vector包含空格,不符合Python变量命名规则
  • 变量未定义:距离计算中用到的p1无赋值,对应你的目标向量
  • 缩进语法错误:多行行首多余空格,触发Python缩进报错
  • 表达式断行错误:平方和计算表达式无故换行,语法解析失败
  • 逻辑不符合需求:仅提取了CSV第一行数据,未实现全量行距离计算

修正后可运行代码

import os
import numpy as np 
import pandas as pd

# 读取本地CSV文件
fname = os.path.join("dataset.csv")
avg_monthly_precip = pd.read_csv(fname)
# 打印数据集统计信息,校验读取是否正常
print(avg_monthly_precip.describe())

# 定义目标向量,转为numpy数组方便批量计算
target_vec = np.array([70, 60, 59, 10])
# 提取所有行的前4列数据
row_data = avg_monthly_precip.iloc[:, 0:4].values

# 批量计算每行与目标向量的欧氏距离,axis=1表示按行计算
euclidean_distances = np.linalg.norm(row_data - target_vec, axis=1)

# 打印所有行的计算结果
for row_num, dist in enumerate(euclidean_distances, 1):
    print(f"第{row_num}行欧氏距离:{dist:.4f}")

补充说明

如果你的CSV前4列存在非数值类型数据,需要先做类型转换再计算,可在提取row_data前添加如下代码处理异常值:

# 将前4列强制转为数值类型,异常值转为NaN后删除对应行
avg_monthly_precip.iloc[:, 0:4] = avg_monthly_precip.iloc[:, 0:4].apply(pd.to_numeric, errors='coerce')
avg_monthly_precip = avg_monthly_precip.dropna(subset=avg_monthly_precip.columns[0:4])

内容的提问来源于stack exchange,提问作者Muhammed Farhan Aslam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:36:02