2016-01-04 12:31 GMT-05:00 Rolando Paz <flx...@gmail.com>: > Muchas gracias a todos. Explicare de forma general lo que quiero lograr: > > Logre graficar los archivos "bram_aa", "bram_cc", "bram_ac_real" y > "bram_ac_imag" de la siguiente forma: > > > #ABRO LOS ARCHIVOS > bram_aa=open("bram_aa","r") > bram_cc=open("bram_cc","r") > bram_ac_real=open("bram_ac_real","r") > bram_ac_imag=open("bram_ac_imag","r") > > #USO SOLO LAS COLUMNAS 2 Y 8 DEL ARCHIVO BRAM > cols_aa = np.loadtxt(bram_aa, dtype=str, usecols=[2,8]) > cols_cc = np.loadtxt(bram_cc, dtype=str, usecols=[2,8]) > cols_ac_real = np.loadtxt(bram_ac_real, dtype=str, usecols=[2,8]) > cols_ac_imag = np.loadtxt(bram_ac_imag, dtype=str, usecols=[2,8]) > > #DEFINO EN UN PLANO XY, QUIEN ES "X" Y QUIEN ES "Y" > x1 = cols_aa[:,0].astype(int) > y1 = cols_aa[:,1] > > x2 = cols_cc[:,0].astype(int) > y2 = cols_cc[:,1] > > x3 = cols_ac_real[:,0].astype(int) > y3 = cols_ac_real[:,1] > > x4 = cols_ac_imag[:,0].astype(int) > y4 = cols_ac_imag[:,1] > > Luego uso plot(x,y) entre otros comandos, para obtener las gráficas. > > Ahora de acuerdo a las características de mi aplicación, necesito obtener > varias veces cada uno de los archivos bram, luego hacer un promedio de los > datos de los archivos y luego graficar el promedio, es decir que ahora tengo > los archivos: > > bram_aa0 > bram_aa1 > bram_aa2graficasgraficasgraficas > ....etc > > bram_cc0 > bram_cc1 > bram_cc2 > ....etc > > bram_ac_real0 > bram_ac_real1 > bram_ac_real2 > ....etc > > bram_ac_imag0 > bram_ac_imag1 > bram_ac_imag2 > ....etc > > Para la parte de abrir los archivos, hago esto: > > bram_aa = [] > bram_cc = [] > bram_ac_real = [] > bram_ac_imag = [] > > #CREANDO UN BUCLE PARA N ARCHIVOS, COMO EJEMPLO SE USO 3 ITERACIONES > for i in range(0,3): > bram_aa.append(open("bram_aa%s"%i,"r")) > bram_cc.append(open("bram_cc%s"%i,"r")) > bram_ac_real.append(open("bram_ac_real%s"%i,"r")) > bram_ac_imag.append(open("bram_ac_imag%s"%i,"r")) > > Ahora entiendo que debo usar otro bucle para que lea las columnas 2 y 8 de > cada bram y luego definir quien es la X y quien es Y, y luego hacer el > promedio de todas la columnas para luego graficarlas. > > Que opinan? >
Que en realidad lo que quieres guardar en las listas no son los archivos sino las x & y, así que después de abrirlos y sacar los datos que necesitas puedes descartarlos. Además el código es más fácil de entender si agrupas todos los pasos para cada archivo: xy_aa = [] xy_cc = [] for i in range(0, 3): bram_aa = open("bram_aa%s" % i, "r") cols_aa = np.loadtxt(bram_aa, dtype=str, usecols=[2,8]) x1 = cols_aa[:,0].astype(int) y1 = cols_aa[:,1] xy_aa.append((x1, y1)) bram_cc = open("bram_cc%s"%i, "r") cols_cc = np.loadtxt(bram_cc, dtype=str, usecols=[2,8]) x2 = cols_cc[:,0].astype(int) y2 = cols_cc[:,1] xy_cc.append((x2, y2)) bram_ac_real... # luego en otro lado for x, y in xy_aa: plot(x, y) for x, y in xy_cc: plot(x, y) Luego podrías darte cuenta que estas repitiendo el mismo código para cada archivo que abres, entonces lo separas a una función y la llamas en tu bucle para simplificar aun más el código: def get_xy(filename): bram = open(filename) cols = np.loadtxt(bram, dtype=str, usecols=[2,8]) x = cols[:,0].astype(int) y = cols[:,1] return x, y xy_aa = [] xy_cc = [] for i in range(0, 3): x1, y1 = get_xy("bram_aa%s" % i, "r") xy_aa.append((x1, y1)) x2, y2 = get_xy("bram_cc%s" % i, "r") xy_cc.append((x2, y2)) # luego en otro lado for x, y in xy_aa: plot(x, y) for x, y in xy_cc: plot(x, y) Luego podrías guardar todo en un diccionario en lugar de variables individuales (algo como `{"aa": [(x1, y1), (x2, y2)], "bb": [(x2, y2), (x3, y3)], etc}`) para hacer un bucle en lugar de escribir cada for por separado: for name, points in mi_dict.items(): print "plotting %s" % name for x, y in points: plot(x, y) Saludos -- A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. _______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/