La création d'une Matrice de Distance?
Je suis en train de lire des données dans un dataframe qui ressemble à ceci.
City XCord YCord
Boston 5 2
Phoenix 7 3
New York 8 1
..... . .
Je veux créer une Distance Euclidienne de la Matrice à partir de ces données montrant la distance entre toutes les paires de villes donc, je reçois une matrice obtenue comme:
Boston Phoenix New York
Boston 0 2.236 3.162
Phoenix 2.236 0 2.236
New York 3.162 2.236 0
Il y a beaucoup plus de villes et les coordonnées dans mon bloc de données donc j'ai besoin d'être capable de quelque itérer sur toutes les paires de villes et de créer une matrice de distance comme celui que j'ai montré ci-dessus, mais je ne suis pas sûr de la façon de paire tous les cites ensemble et appliquer la formule de la Distance Euclidienne? Toute aide serait appréciée.
Avez-vous des code déjà? Veuillez fournir au moins un code dans lequel vous lisez ces distances en mémoire pour avoir quelque chose comme cordes[boston] = (5, 2)
Maintenant im lire un fichier CSV comme ceci: Données = pd.read_csv('C:\Users\Jerry\Desktop\cities.csv')
voir aussi
Maintenant im lire un fichier CSV comme ceci: Données = pd.read_csv('C:\Users\Jerry\Desktop\cities.csv')
voir aussi
OriginalL'auteur Jeremy | 2015-04-06
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes interessé par distance_matrix.
Par exemple:
De créer des données:
De sortie:
À l'aide de la matrice de distance de la fonction:
Résultats:
OriginalL'auteur Andrew
si vous ne voulez pas utiliser de scipy vous pouvez exploiter compréhension de liste de cette façon:
OriginalL'auteur francesco lc
Je vais donner une méthode en pur python.
Importer une fonction sqrt du module math:
from math import sqrt
Nous supposons que vous avez vos coordonnées dans les cordons tableau de la façon suivante:
cords['Boston'] = (5, 2)
Définir une fonction pour calculer la distance Euclidienne de deux points 2d:
Initialiser la matrice obtenue comme un dictionnaire:
D est votre matrice résultante
La source complet est ci-dessous avec un résultat imprimé:
Résultats:
OriginalL'auteur pkacprzak
Il y a la fonction scipy:
scipy.spatiales.distance.cdist()
OriginalL'auteur Maassa