FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Lista bidimensional de python a txt
Antes que nada, gracias por su tiempo y su generosa ayuda.
Tengo un archivo txt conformado por 344,160 lineas. Cada linea tiene 3 valores: coordenada x, coordenada y, dato. Estos 3 valores estan separados por espacio. Ej: 338619.4247572054 2304584.9999724245 -10.0. Lo que intento es meter estos 344,160 datos en una lista bidimensional de tamaño 100 x 100. Utilizo las coordenadas x, y de cada linea para calcular la columna y renglon en la cual debo colocar cada dato. Dado que la lista unicame tiente 10,000 posiciones (100x100 = 10,000) y el txt tiene 344,160 datos, muchos datos van a caer dentro de una misma posición dentro de la lista, por lo cual estoy haciendo un promedio. Por otra parte, habran posiciones dentro de la lista en los cuales no caerá ningún dato. A estas posiciones de la lista les agrego el valor -9999 para indicar que es un dato nulo. El proceso que sigo es el siguiente:
De este modo tengo dos lista. listadatos que contiene hasta ahora 10,000 valores iguales a -9999 y listacant que cotiene 10,000 valores iguales a cero. para promediar los datos y colocarlos en listadatos, verifico en primer lugar si la posición ya contiene valores distintos a -9999 o no, y deacuerdo con esto hago el promedio. Código:
for i in range (344160): linea = temp_arc.readline() # lee una linea del txt xdato, ydato, zdato = linea.split(' ') # se obtienen coordenadas y dato por separado ncol = math.trunc ( ( float ( xdato ) - xmin ) / rsl ) # calculo de columna. rsl = resolución nfil = math.trunc ( ( ymax - float ( ydato ) ) / rsl ) # calculo de fila if listadatos[ncol][nfil] == -9999: # listadatos[ncol][nfil] = float ( zdato ) else: listadatos[ncol][nfil] = ( ( listadatos[ncol][nfil] * listacant[ncol][nfil] + float (zdato) ) / ( listacant[ncol][nfil] + 1 ) ) listacant[ncol][nfil] += 1 antes habia hecho el codigo con delphi y corria sin problemas, pero aquí no entiendo que pasa. Me disculpo por lo extenso de mi consulta y ojala alguien pueda darme una pista de lo que estoy haciendo mal. Saludos y gracias nuevamente. Última edición por Casimiro Notevi fecha: 11-03-2024 a las 21:33:44. |
#2
|
||||
|
||||
No es necesario calcular el promedio cada vez que modificas una celda.
Creo que lo mejor es dividirlo en varios pasos. Además no creo que debas utilizar el valor -9999 como indicador de nulo. Yo simplemente dejaría la celda con un 0. Te dejo un pseudocódigo Delphi:
|
#3
|
|||
|
|||
Cierto, no es necesario promediar cada vez.
Tengo un código en delhi que corre sin problemas. La cosa es que quiero hacerlo con python porque, posterirmente voy a utlizar este código en QGis. En python no hace lo que debería y no entiendo por qué. Gracias por tu ayuda! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Array bidimensional dinámico | harpo | Varios | 3 | 31-03-2015 16:11:17 |
Tutorial de Python 'Python para todos' | marcoszorrilla | Noticias | 11 | 15-02-2009 06:19:15 |
Liberar array bidimensional de botones | Raze | Varios | 2 | 16-05-2006 14:45:14 |
Llenar un arreglo bidimensional ... | Luli | Varios | 8 | 23-03-2005 13:22:06 |
arreglo bidimensional | Luli | Varios | 7 | 22-01-2005 14:09:44 |
|