Solución distancias 1
import numpy as np import pandas as pd from scipy.spatial import distance # Definimos los puntos puntos = { 'Punto A': (2, 3), 'Punto B': (5, 4), 'Punto C': (1, 1), 'Punto D': (6, 7), 'Punto E': (3, 5), 'Punto F': (8, 2), 'Punto G': (4, 6), 'Punto H': (2, 1) } # Convertimos los puntos a un DataFrame df_puntos = pd.DataFrame(puntos).T df_puntos.columns = ['X', 'Y'] print("Coordenadas de los puntos:") print(df_puntos) def calcular_distancias(puntos): distancias = pd.DataFrame(index=df_puntos.index, columns=df_puntos.index) # Cálculo de distancias for i in df_puntos.index: for j in df_puntos.index: if i != j: # No calcular la distancia a sí mismo # Distancia Euclidiana distancias.loc[i, j] = distance.euclidean(df_puntos.loc[i], df_puntos.loc[j]) return distancias distancias = calcular_distancias(puntos) valor_maximo = distancias.values.max() (punto1, punto2) = distancias.stack().idxmax() print("Tabla de distancias") print(distancias) print("Distancia máxima ", valor_maximo) print("Entre el punto ", punto1, "; y el punto ", punto2) # Otra manera max_value = distancias.max().max() # Obtener la columna que contiene el valor máximo col_max = distancias.max().idxmax() # Obtener el índice (fila) que contiene el valor máximo idx_max = distancias[col_max].idxmax() print(f"Valor máximo: {max_value}") print(f"Columna: {col_max}") print(f"Índice: {idx_max}")