Python - Pasar matriz fichero

 
Vista:
sin imagen de perfil
Val: 8
Ha disminuido su posición en 11 puestos en Python (en relación al último mes)
Gráfica de Python

Pasar matriz fichero

Publicado por Jsn (4 intervenciones) el 05/11/2020 21:06:20
Buenas,
Tengo un fichero con una columna la ciudad desde otra la ciudad hasta y otra con la distancia entre ambas.
Cómo puedo crear una matriz con tantas filas y columnas de las ciudades que represente las distancias?
Soy nueva en Python y por mucho que le doy vueltas no se cómo hacerlo.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pasar matriz fichero

Publicado por joel (901 intervenciones) el 05/11/2020 22:14:58
Como sabes las filas que tienes que crear?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 11 puestos en Python (en relación al último mes)
Gráfica de Python

Pasar matriz fichero

Publicado por Jsn (4 intervenciones) el 05/11/2020 22:21:01
Las filas son las tantas ciudades hay y las columnas también.
El fichero es algo así:
From. To. Distancia
Madrid. Madrid. O
Valencia. Madrid. 300
Alicante. Madrid. 450

Y tengo que sacar una matriz que represente la distancia.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pasar matriz fichero

Publicado por joel (901 intervenciones) el 06/11/2020 07:54:33
Ah, entiendo... puedes adjuntar el archivo para probarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 388
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pasar matriz fichero

Publicado por Daniel (111 intervenciones) el 06/11/2020 09:52:33
Hola,

Entiendo que lo que se desea es una matriz cuadrada de n por n. Esto se pude hacer con listas o con NumPy una vez que se conoce el valor de n.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd
import numpy as np
 
data = pd.read_csv('distancias.csv')
ciudades = data['from'].unique()
num_ciudades = len(ciudades)
 
# Usando listas
lista = [None] * num_ciudades
for i in range(num_ciudades):
    lista[i] = [0] * num_ciudades
 
# Usando NumPy
matriz = np.zeros((num_ciudades, num_ciudades))

Saludos,
Daniel Rodríguez
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar matriz fichero

Publicado por Jsn (4 intervenciones) el 06/11/2020 10:11:35
Gracias Daniel, pero en tu solución no acabo de ver dónde está la distancia. La matriz debe tener tantas filas y columnas como ciudades tiene, pero debe indicar la distancia.
Esto generaría una matriz de dimensión con ceros, no ? Pero como represento las distancias?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 388
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pasar matriz fichero

Publicado por Daniel (111 intervenciones) el 06/11/2020 11:39:01
Con NumPy y Pandas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd
import numpy as np
 
data = pd.read_csv('distancias.csv')
ciudades = data['from'].unique()
num_ciudades = len(ciudades)
 
# Usando NumPy
matriz = np.zeros((num_ciudades, num_ciudades))
 
for _, row in data.iterrows():
    initial = np.where(ciudades == row['from'])[0][0]
    final = np.where(ciudades == row['to'])[0][0]
    matriz[initial][final] = row['dist']
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar