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