El 6 de enero de 2012 09:36, lasizoillo <lasizoi...@gmail.com> escribió:
> El día 6 de enero de 2012 08:51, ezequiel <ezecasti...@gmail.com> > escribió: > > Hola a todos y feliz comienzo de año, > > > > Les paso a explicar mi problema: en una parte de mi código escribo a > > un archivo de salida con el siguiente comando: > > > > 'outfile.write("%8.4f %10.4E %8.3f %10.4E %10.4E\n" % (d[i], p[j], > > qa[k], fuerza, ft[i]))' > > > > es decir, ya tengo los arreglos por separado. Pero esta orden se > > encuentra dentro de tres loops que iteran con respecto a 'i', 'j' y 'k' > > De modo tal que el archivo de salida tiene la siguiente pinta: > > > > > > # dist alpha carga fuerza fuerza-teo > > 12.0000 1.0000E-03 0.100 -9.2793E+01 -3.0569E+02 > > 12.0000 1.0000E-03 1.200 -1.1306E+02 -3.0569E+02 > > 12.0000 1.0000E-03 2.300 -1.1436E+02 -3.0569E+02 > > ... > > 12.0025 1.0000E-03 0.100 -9.2679E+01 -3.0510E+02 > > 12.0025 1.0000E-03 1.200 -1.1290E+02 -3.0510E+02 > > ... > > > > Lo que quiero hacer es tener para cada combinación de alpha y carga > > (p[] y qa[]) (que no se encuentran continuas), todos los valores de > > distancia y fuerzas correspondientes, o sea mi archivo de salida > > tendría que quedar algo asi: > > > > # alpha carga dist fuerza fuerza-teo > > 1.0000E-03 0.100 12.0000 -9.2793E+01 -3.0569E+02 > > 1.0000E-03 0.100 12.0025 -9.2679E+01 -3.0510E+02 > > ... > > 1.0000E-03 1.200 12.0000 -1.1306E+02 -3.0569E+02 > > 1.0000E-03 1.200 12.0025 -1.1290E+02 -3.0510E+02 > > ... > > 1.0000E-03 2.300 12.0000 -1.1436E+02 -3.0569E+02 > > ... > > > > y así sucesivamente para las distintas combinaciones. > > Hace una semana que empecé a programar en Python, por lo que les pido > > disculpas si esto es muy fácil de hacer. > > > > > Hola. Podrías usar argsort [1] incluido en numpy (parece que haces cosas de ciencia por lo que te recomiendo usar numpy). Un ejemplo tonto (en la consola de ipython): *In [29]: import numpy as np In [30]: a = np.array((np.arange(20), np.random.randn(20))) #Creamos un array In [31]: a[0,3] = 0 #Repetimos un elemento en la primera columna para que se parezca a tu problema In [32]: a Out[32]: array([[ 0. , 1. , 2. , 0. , 4. , 5. , 6. , 7. , 8. , 9. , 10. , 11. , 12. , 13. , 14. , 15. , 16. , 17. , 18. , 19. ], [ 0.62109734, -1.66227531, -0.13531228, -0.36858396, 0.20819283, -1.91722834, 0.43300811, -1.92397695, -0.09230548, 0.14619123, 1.59821385, -0.28736747, 0.66816904, -1.65682382, -0.16931408, -1.52021098, -1.27927906, 1.51208342, -1.22674823, 0.70934827]]) In [33]: a.argsort() #Esto te daría los índices ordenados de menor a mayor para tu array en cada una de las columnas Out[33]: array([[ 0, 3, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [ 7, 5, 1, 13, 15, 16, 18, 3, 11, 14, 2, 8, 9, 4, 6, 0, 12, 19, 17, 10]])* [1] http://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html#numpy.argsort Espero te sirva. Saludos.
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/