Hola Carlos Perdona que hasta ahora contesté, pero te agradezco el correo. Me sirvió mucho para reducir las iteraciones del código y que fuera más resumido.
Muchas gracias de nuevo. El 13 de enero de 2016, 9:16, Carlos Zuniga <carlos....@gmail.com> escribió: > 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/ >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/