簡體   English   中英

如何在python中計算歐幾里得距離

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM