【问题标题】:How to calculate the Euclidean distance in python如何在python中计算欧几里得距离
【发布时间】:2021-10-30 08:42:48
【问题描述】:

我有一个 .csv 格式的数据集。包含 2099846 行和 38 列 我想计算任何一对行的欧几里得距离并设置为另一个二维数组。

import pandas as pd
import numpy as np


data = pd.read_csv('fraudDataset.csv', encoding= 'unicode_escape')
row = len(data)

data = data.astype(int)

distanceMatrix = np.zeros((np.shape(data)))




for datai  in range(len(data)):
     for dataj in range( datai + 1,len(data)):
            distanceMatrix[datai,dataj] = np.linalg.norm(data[3] - data[4], ord=None, axis=None, keepdims=False)     
    

但它给出了错误

   return self._engine.get_loc(casted_key)

  File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\hashtable_class_helper.pxi", line 1675, in pandas._libs.hashtable.PyObjectHashTable.get_item

  File "pandas\_libs\hashtable_class_helper.pxi", line 1683, in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: 3

您能帮我完成这项任务吗?

【问题讨论】:

标签: python pandas numpy


【解决方案1】:

我无法复制该问题,因为有关数据类型的信息不足,因此建议修复错误消息。 但是根据您的问题描述,我认为scipy.spatial* 中的cdist 函数可以解决您的问题。由于您没有提供示例数据行,我创建了一个整数矩阵A

from scipy.spatial.distance import cdist
A=np.random.randint(10, size=(10,10))

B=cdist(A, A, metric='euclidean')

B自然是一个对称矩阵。

* https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.cdist.html

【讨论】:

  • 数据类型为数据Frame
猜你喜欢
  • 2018-08-26
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 2010-11-26
  • 2020-07-24
  • 2013-04-07
  • 2020-11-29
相关资源
最近更新 更多