[英]How to calculate the Euclidean distance in python
我有一个 .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
你能帮我怎么做这个任务吗?
我无法复制该问题,因为有关数据类型的信息不足,因此建议修复错误消息。 但是从您的问题描述cdist
,我认为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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.