Python - Operaciones con Matrices
Publicado por Jairoes (1 intervención) el 11/01/2017 13:47:42
Hola,
estoy aprendiendo Python y tengo algunos problemas. Mi objetivo es leer de un fichero de texto una lista de puntos con sus coordenadas (x, y, z).
Crear una matriz y realizar varias operaciones:
1.- Ordenar todas las líneas de la matriz por el valor de su coordenada 'z' y salvar la matriz.
2.- A partir de la matriz anterior crear matrices a partir de grupos de cuatro líneas y ordenar estas matrices pequeñas en función del valor de la coordenada 'x' y salvar en una nueva matriz.
Estoy utilizando python 3.5. La matriz la puedo importar y ordenar según la operación descrita en el punto 1 sin problemas.
Al ejecutar el punto 2 no consigo crear un loop y salvar la matriz de forma correcta. Mi código es el siguiente:
no consigo crear una nueva matriz con todos los puntos y ordenados como yo quiero. Creo que el código debería de ser asi pero matriz4 solo me contiene las cuatro últimas líneas y no todas.
Gracias por adelantado,
estoy aprendiendo Python y tengo algunos problemas. Mi objetivo es leer de un fichero de texto una lista de puntos con sus coordenadas (x, y, z).
Crear una matriz y realizar varias operaciones:
1.- Ordenar todas las líneas de la matriz por el valor de su coordenada 'z' y salvar la matriz.
2.- A partir de la matriz anterior crear matrices a partir de grupos de cuatro líneas y ordenar estas matrices pequeñas en función del valor de la coordenada 'x' y salvar en una nueva matriz.
Estoy utilizando python 3.5. La matriz la puedo importar y ordenar según la operación descrita en el punto 1 sin problemas.
Al ejecutar el punto 2 no consigo crear un loop y salvar la matriz de forma correcta. Mi código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#Extraer lineas puntos fichero
infile = open('filename,'r')
outfile = open('salida_puntos.txt','w')
print('>>>> Working')
palabra = 'prescribed_point'
for linea in infile:
if palabra in linea:
outfile.write (linea)
infile.close()
outfile.close()
filas = 0
filas += len(open('salida_puntos.txt').readlines())
print('Numero de filas:', filas)
if (filas > 576):
print('El numero de puntos es mayor al que debería (576). Por favor revisa puntos duplicados')
file = open('salida_puntos.txt', 'r')
data = file.read().split('\n')
file.close()
linea = 0
lista = []
while (linea) < (filas):
uno = data[linea].split(' ')
lista.append(uno)
linea += 1
lista.append(uno)
cantidad = len(lista)
print('Longitud lista:', cantidad)
print('Numero filas:', filas)
if cantidad != filas:
print('Borrada última fila de la lista')
lista.pop()
cantidad = len(lista)
print('Longitud lista:', cantidad)
coordx_aux = [[x[1] for x in lista]]
coordx_aux2 = [[float(y) for y in x] for x in coordx_aux]
coordx = coordx_aux2[0]
coordy_aux = [[x[2] for x in lista]]
coordy_aux2 = [[float(y) for y in x] for x in coordy_aux]
coordy = coordy_aux2[0]
coordz_aux = [[x[3] for x in lista]]
coordz_aux2 = [[float(y) for y in x] for x in coordz_aux]
coordz = coordz_aux2[0]
desc = [x[7] for x in lista]
matriz = [[coordx[i], coordy[i], coordz[i], desc[i]] for i in range(len(coordx))]
#Ordenar matriz en 'z' Primer ordenamiento
matriz.sort(key=lambda x:x[2], reverse=True)
#Crear matrices de 4 lineas y ordenarlas en 'x'
ref1 = 0
ref2 = 4
matriz2 = []
while ref2 <= len(matriz):
vortex = matriz[ref1:ref2]
vortex.sort(key=lambda x:x[0], reverse=True)
matriz3 = vortex + matriz2
ref1 += 4
ref2 += 4
matriz4 = vortex + matriz3
no consigo crear una nueva matriz con todos los puntos y ordenados como yo quiero. Creo que el código debería de ser asi pero matriz4 solo me contiene las cuatro últimas líneas y no todas.
Gracias por adelantado,
Valora esta pregunta


0