El día 7 de agosto de 2013 17:56, Kiko <kikocorre...@gmail.com> escribió:
> pandas está muy 'cythonizado' por lo que para muchas operaciones > debería ser muy buena opción. Su funcionamiento pretende emular parte > de la funcionalidad de R (dataframes). Sí, ya me doy cuenta que todo va moviéndose muy rápido. De momento quiero centrarme en R y OpenBUGS (inferencia bayesiana), pero tengo a pandas y scikit-learn en espera. > Si trabajas con información muy 'grande' que no entra en memoria una > buena opción es pytables ya que el acceso a los datos es muy rápido. > Si te entra todo en memoria quizá no es necesario que lo pruebes > ahora. De momento, no paso de 5 ó 6 GB. que es aún manejable. Procuro que las operaciones no aumenten el gasto de memoria, pero preveo pasar a otras estrategias como el cálculo distribuido. > Gente que andaba desarrollando numexpr (Francesc) ahora están metidos > en continuum que son los desarrolladores de numba, blaze,... Numexpr > es un jit de un subconjunto limitado de operaciones. Numba quizá sea > algo más generalista y es realmente brillante cuando hay que meterse > en bucles y la vectorización de numpy no ayuda del todo > (http://jakevdp.github.io/blog/2013/06/15/numba-vs-cython-take-2/). Sigo bastante de cerca la labor de Francesc, Travis Oliphant y el resto del equipo de continuum. LLVM (usado por numba) está entre las "estrategias" de cálculo distribuido consideradas, aunque no descarto soluciones del estilo hadoop. > > Saludos. > > El 07/08/13, Chema Cortes <pych...@gmail.com> escribió: >> El día 7 de agosto de 2013 14:30, Kiko <kikocorre...@gmail.com> escribió: >> >>> mira también rot90, fliplr, flipud... >>> >>> http://docs.scipy.org/doc/numpy/reference/routines.array-manipulation.html#rearranging-elements >> >> Los había mirado, pero son funciones para >= 2-d. No veo cómo usarlas >> con listas unidimensionales. >> >> >>> >>> El 07/08/13, Chema Cortes <pych...@gmail.com> escribió: >>>> El día 6 de agosto de 2013 16:38, Daπid <davidmen...@gmail.com> escribió: >>>>> 2013/8/6 Chema Cortes <pych...@gmail.com>: >>>> >>>>> Por otro lado, si la operación de inversión no se hace sobre el array, >>>>> sino sobre una copia, se gana tiempo: >>>>> >>>>> In [31]: l2 = l.copy() >>>>> >>>>> In [32]: %timeit l[i+1:j+1]=l2[j:i:-1] >>>>> 10000 loops, best of 3: 101 us per loop >>>> >>>> He mirado un poco mejor el funcionamiento de los arrays en numpy. Los >>>> troceos no crean nuevos arrays, sino lo que llama "vistas" ("views") >>>> (a excepción de los "fancy indexing" de numpy). Como las vistas están >>>> enlazadas con el objeto original, los cambios en una vista se efectúan >>>> directamente sobre el objeto original de forma eficiente. >>>> >>>> Creo que usaré los arrays de numpy para operaciones con listas >>>> grandes. También necesitaba hacer rotar la lista, cosa que veo que >>>> puede hacer con np.roll, aunque no es tan eficiente como deque >>>> .rotate() que realiza la operación "in-place". >>>> >>>> Como curiosidad, había descartado algunas pruebas bizarras con deque, >>>> pero muestra lo increiblemente rápido que puede llegar a ser: >>>> >>>> d=deque(l) >>>> >>>> %timeit d.rotate(-i-1);d.extendleft([d.popleft() for _ in >>>> range(j-i)]);d.rotate(i+1) >>>> 10 loops, best of 3: 29.8 ms per loop >>>> >>>> Es la misma operación que l[i+1:j+1]=l2[j:i:-1], primero rotando la >>>> lista hacia la izquierda, añadiendo la lista invertida al principio y >>>> volviendo a rotar hacia la derecha para mantener el mismo orden. >>>> >>>> >>>> -- >>>> Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": >>>> http://ch3m4.org/blog >>>> Buscador Python Hispano: http://ch3m4.org/python-es >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es@python.org >>>> http://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es@python.org >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >> >> >> >> -- >> Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": >> http://ch3m4.org/blog >> Buscador Python Hispano: http://ch3m4.org/python-es >> _______________________________________________ >> Python-es mailing list >> Python-es@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/