Re: [Python-es] Orientación: Mi primer programa

2019-08-04 Por tema Daπid
Lo más sencillo sería una página web. Hay muchos tutoriales, y con una sola
aplicación funciona en Windows, Linux, Mac, teléfonos, y hasta la cafetera
si tiene un explorador. Además, sería lo más fácil de mantener, porque no
dependes de bibliotecas gráficas que pueden ser y serán actualizadas en el
futuro.

/David

On Sat, 3 Aug 2019, 8:50 pm Yoyis,  wrote:

> Hola todos, desarrolle la parte funcional de automatización para un sitio
> web, me falta la interfaz de usuario.
>
> Entorno de ejecución:
>
>- De momento 10 usuarios conectados mediante una red local a un
>servidor de archivos
>- Cada uno genera los documentos a procesar en el sitio
>- La base de datos debe ser compartida
>- Aproximadamente se procesan 7.000 documentos al mes
>- Cada documento tiene entre 1 y 30 páginas, el promedio es de 2
>páginas por documento
>- Promedio diario de documentos por usuario 35, 5 días a la semana.
>- Horas pico tanto del sitio como local, de 10 a.m. a 12 m. y de 2
>p.m. a 4 p.m.
>- Una ves recibido el documento, el sitio tarda en procesarlo entre 2
>y 72 horas reloj, promedio 8 horas reloj
>
> En las pruebas el programa tarda 8 segundos en subir la primera página de
> un documento, para las demás algo menos de 2 segundos.
>
> Esto es para la micro-empresa donde laboro como mensajero, los recursos
> económicos son escasos y este programa les ayudaría creo que a duplicar la
> capacidad de trabajo, y sobre todo yo mejoraría mis ingresos y de pronto
> hasta de cargo.
>
> ¿De acuerdo con lo anterior que me aconsejan para crear la interfaz de
> usuario?, tengan en cuenta que es mi primer programa, nunca hice una
> interfaz ni he leído como se hace!.
>
> De antemano agradezco su colaboración en orientarme en como finalizar este
> proyecto, no tengo compromiso alguno con respecto a nada, así que me puedo
> tardar lo que sea necesario para culminarlo, claro, que ayudaría mucho que
> fuera pronto.
>
> Cordial saludo, Yoyis.
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] ¿Cómo generar una distribución aleatoria?

2019-07-07 Por tema Daπid
La declaración de tipos es opcional, pero si los declaras, puedes usar mypy
para hacer análisis estático. En Python 2 lo puedes hacer con comentarios:

https://mypy.readthedocs.io/en/latest/python2.html

Lo bueno es que sólo lo tienes que declarar donde tú quieras.

On Sun, 7 Jul 2019 at 18:24, Jose Caballero 
wrote:

> Muchas gracias a todos por los comentarios, soluciones, etc.
> Se las voy traduciendo a mi colega (no habla ni una palabra de español) y
> se las voy pasando.
> Y de paso yo también estoy aprendiendo bastante.
>
> Por cierto, por motivos que no vienen al caso, en el curro estamos
> atascados con python2.7 hasta que nuestro centro de trabajo renueve el
> contrato con RedHat para EL 8.
> O sea que aún no he necesitado aprender python3. Viendo el código de
> Chema...
> ¿Ahora hay que declarar los tipos? ¿Han convertido python en C++? En fin,
> parece que tendré que investigarlo.
>
> Muchas gracias por todo.
> Un saludo,
> Jose
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Leer fichero al mismo tiempo que se está escribiendo por otro proceso.

2019-07-04 Por tema Daπid
El archivo está vacío, así que chunk es una cadena vacía. Esa función asume
que el archivo no está creciendo, así que cuando no lee más, el archivo
está terminado.

On Thu, 4 Jul 2019, 7:56 pm Raúl Alexis Betancor Santana, <
r...@dimension-virtual.com> wrote:

> Haciendo más pruebas, he llegado a la conclusión, de que lo que está mal
> es la función de read_in_chunks ... ya que nunca lee nada y siempre acaba
> dentro del if not chunk: break ... y no entiendo porque narices.
>
> En todos los ejemplos que encuentro por la red para leer un fichero
> binario por porciones, siempre usan mas o menos el mismo estilo de código
> para la función, pero esta parece que nunca lee nada.
>
> ¿Que estoy haciendo rematadamente mal, que no soy capaz de leer un fichero
> binario a trozos? ... :-(
>
> --
>
> *De: *"Raúl Alexis Betancor Santana" 
> *Para: *"python-es" 
> *Enviados: *Jueves, 4 de Julio 2019 13:55:56
> *Asunto: *Re: [Python-es] Leer fichero al mismo tiempo que se está
> escribiendo por otro proceso.
>
> No puedo, los ficheros los genera Asterisk y no voy a estar tocando el
> código para eso.
>
> He probado añadiendo un delay de 250ms al inicio de la lectura, para darle
> tiempo a que haga un flush a disco, pero tampoco me vá.
>
> En realidad lo que me mosquea, es que un ejemplo que tengo en Node.js y
> que hace exactamente lo mismo, funciona perfectamente, pero el código de
> python se me queda en el for response in responses: ... osea, no llega
> nunca a recibir respuesta de GCS o el generador del read_in_chunks no está
> resolviendo o algo raro.
>
> Ahora lo estoy intentando con ARI, porque llevo días intentandolo con un
> script en python que ejecutaba desde el EAGI y tampoco había forma, o
> escuchaba el stream de audio y lo interpretaba o reproducía una locución
> del IVR, pero no ambas cosas al mismo tiempo y hacerlo vía threads, se me
> complicaba la cosa, hacerlo vía multiprocess y pipes, tenía el problema de
> que tenía que estar leyendo desde el proceso hijo el FD 3 del proceso
> padre, un coñazo.
>
> Si ha alguien se le ocurre como resolver esto ... estoy abierto a ideas.
>
> --
>
> *De: *"Daπid" 
> *Para: *"python-es" 
> *Enviados: *Jueves, 4 de Julio 2019 11:57:11
> *Asunto: *Re: [Python-es] Leer fichero al mismo tiempo que se está
> escribiendo por otro proceso.
>
> Creo que has encontrado la solución, pero la has puesto en el lugar
> equivocado.
>
> #audio_file = io.open(stream_file+'.sln16','rb',buffering=0)
>
> El proceso que está escribiendo al archivo está probablemente usando un
> buffer, lo que quiere decir que sólo escribe al disco duro de vez en
> cuando, cuando haya acumulado una cierta cantidad de datos. Si tienes
> acceso al programa que escribe el archivo, tienes que o bien desactivar el
> buffer (¡cuidado con el rendimiento!), usar uno más pequeño, o vaciarlo
> explícitamente con un flush() más a menudo.
>
>
>
> On Thu, 4 Jul 2019 at 12:28, Raúl Alexis Betancor Santana <
> r...@dimension-virtual.com> wrote:
>
>> Buenas, estoy intentando hechar a andar el Google Cloud Speech, he
>> intento leer en stream de un fichero que está siendo escrito por otro
>> proceso, que contiene la grabación del audio, para enviarla al GCS, pero
>> sin éxito.
>>
>> ¿Alguien me puede comentar que estoy haciendo mal?, con el ejemplo que da
>> GCS para hacer lo mismo con un fichero directamente, que lo que hace es
>> leerlo completo en memoria y enviarlo, no me da problemas y transcribe bien
>> el texto.
>>
>> Basandome en el código de ejemplo de GCS para streaming
>>
>> def read_in_chunks(file_object,chunk_size):
>>"""Lazy function (generator) to read a file piece by piece.
>>while True:
>>  chunk = file_object.read(chunk_size)
>>  if not chunk:
>>return
>>  data = [chunk]
>>  yield b''.join(data)
>>
>> def transcribe_streaming(stream_file,language,timeout):
>> """Streams transcription of the given audio file."""
>> from google.cloud import speech
>> from google.cloud.speech import enums
>> from google.cloud.speech import types
>> import io
>> client = speech.SpeechClient()
>>
>> #audio_file = io.open(stream_file+'.sln16','rb',buffering=0)
>> audio_file = io.open(stream_file+'.sln16','rb')
>> # In practice, stream should be a generator yielding chunks of audio
>> data.
>> requests = (types.StreamingRecognizeRequest(audio_content=chunk)
>> for chunk in read_in_chunks(audio_file,3200))
>>
>> config = types.Recog

Re: [Python-es] Leer fichero al mismo tiempo que se está escribiendo por otro proceso.

2019-07-04 Por tema Daπid
Creo que has encontrado la solución, pero la has puesto en el lugar
equivocado.

#audio_file = io.open(stream_file+'.sln16','rb',buffering=0)

El proceso que está escribiendo al archivo está probablemente usando un
buffer, lo que quiere decir que sólo escribe al disco duro de vez en
cuando, cuando haya acumulado una cierta cantidad de datos. Si tienes
acceso al programa que escribe el archivo, tienes que o bien desactivar el
buffer (¡cuidado con el rendimiento!), usar uno más pequeño, o vaciarlo
explícitamente con un flush() más a menudo.



On Thu, 4 Jul 2019 at 12:28, Raúl Alexis Betancor Santana <
r...@dimension-virtual.com> wrote:

> Buenas, estoy intentando hechar a andar el Google Cloud Speech, he intento
> leer en stream de un fichero que está siendo escrito por otro proceso, que
> contiene la grabación del audio, para enviarla al GCS, pero sin éxito.
>
> ¿Alguien me puede comentar que estoy haciendo mal?, con el ejemplo que da
> GCS para hacer lo mismo con un fichero directamente, que lo que hace es
> leerlo completo en memoria y enviarlo, no me da problemas y transcribe bien
> el texto.
>
> Basandome en el código de ejemplo de GCS para streaming
>
> def read_in_chunks(file_object,chunk_size):
>"""Lazy function (generator) to read a file piece by piece.
>while True:
>  chunk = file_object.read(chunk_size)
>  if not chunk:
>return
>  data = [chunk]
>  yield b''.join(data)
>
> def transcribe_streaming(stream_file,language,timeout):
> """Streams transcription of the given audio file."""
> from google.cloud import speech
> from google.cloud.speech import enums
> from google.cloud.speech import types
> import io
> client = speech.SpeechClient()
>
> #audio_file = io.open(stream_file+'.sln16','rb',buffering=0)
> audio_file = io.open(stream_file+'.sln16','rb')
> # In practice, stream should be a generator yielding chunks of audio data.
> requests = (types.StreamingRecognizeRequest(audio_content=chunk)
> for chunk in read_in_chunks(audio_file,3200))
>
> config = types.RecognitionConfig(
> encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
> sample_rate_hertz=16000,
> language_code=language)
> #streaming_config =
> types.StreamingRecognitionConfig(config=config,single_utterance=True)
> streaming_config = types.StreamingRecognitionConfig(config=config)
>
> # streaming_recognize returns a generator.
> responses = client.streaming_recognize(streaming_config, requests)
> for response in responses:
># Once the transcription has settled, the first result will contain the
># is_final result. The other results will be for subsequent portions of
># the audio.
>for result in response.results:
>   if result.is_final:
>  print('Finished: {}'.format(result.is_final))
>  print('Stability: {}'.format(result.stability))
>  alternatives = result.alternatives
>  ### The alternatives are ordered from most likely to least.
>  for alternative in alternatives:
> print('Confidence: {}'.format(alternative.confidence))
> print(u'Transcript: {}'.format(alternative.transcript))
> (null)
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] ¿Cómo generar una distribución aleatoria?

2019-07-03 Por tema Daπid
Distribución plana es sólo uno de los requisitos de randint. Otro es que
los valores sucesivos sean independientes.

La solución de Mario tiene este problema:

import numpy as np
import pylab as plt

results = []
k, seed = randint_1_7()
for n in range(10):
k, seed = randint_1_7(seed)
results.append(k)

results = np.array(results)
plt.hist2d(results[::2], results[1::2], bins=(np.arange(1, 8)-0.5,
np.arange(1,8)-0.5))
plt.colorbar()
plt.scatter(results[::2], results[1::2], color='w')
plt.tight_layout()
[image: hist_randint.png]

Como puedes ver, nunca tienes dos números iguales seguidos, y nunca tienes
un número seguido del anterior.

El mismo proceso en tres dimensiones revela más agujeros.

La solución de Lasizoillo parece no tener este problema.


Detalle importante: este es un test muy básico de independencia, que lo
pase no quiere decir que sea independiente...

/David.

On Wed, 3 Jul 2019 at 18:07, Mario R. Osorio  wrote:

> Muy interesante la solución de Javi (Que demuestra tener una distribución
> plana), sin embargo me permito presentar la mía para su consideración:
>
> """
>  Solucion para:
> generar una distribución plana de enteros aleatorios, del 1 al 7,
> usando únicamente random.randint(1,5)
> como funcion generadora de enteros aleatorios
> """
>
> from random import randint
>
> def randint_1_7(seed=None):
> l = (1, 2, 3, 4, 5, 6, 7)
>
> if seed is None:
> seed = randint(1,5) + randint(1,5)
> else:
> seed += randint(1,5)
>
> seed = seed % 7
>
> return (l[seed - 1], seed)
>
>
> if __name__ == "__main__":
> """
> se demuestra que la distribucion es plana,
> pero la PRUEBA matematica se la dejo a otro...
>
> """
>
> d = {}
> k, seed = randint_1_7()
>
> for n in range(10):
> k, seed = randint_1_7(seed)
> if k in d:
> d[k] += 1
> else:
> d[k] = 1
>
> print(d)
>
>
>
>
> On Tue, Jul 2, 2019 at 10:10 PM lasizoillo  wrote:
>
>> Buenas,
>>
>> Lo primero sería acotar cual es realmente el problema. En una entrevista
>> de trabajo alguien tiene que desentrañar si eres apto o no para un puesto y
>> esa aptitud puede tener varias facetas:
>> - Eres capaz de poner en duda los requisitos y plantear alternativas
>> mejores para la empresa
>> - Eres capaz de resolver problemas lógicos
>> - Ante un problema que muy posiblemente no sabes por dónde cogerlo...
>> ¿cómo vas a reaccionar? te enfadarás, tratarás de colar una solución
>> erronea, asumirás que no sabes hacer eso pero plantearás estrategias para
>> atacar el problema, ...
>>
>> Así que lo primero negociaría si realmente no se puede simplificar el
>> enunciado porque lo que realmente se quiere evaluar el conocimiento técnico
>> o recursos para atacar este problema. Si les vale ser capaz de poner en
>> duda requisitos peregrinos eso que me ahorraría. Si quiere una solución
>> técnica pasaría a atacar el problema, reconociendo que no sé la solución a
>> priori, y pensaría en voz alta algunas cosas evidentes:
>> - Una sola llamada a la función randint(1,5) no tiene información
>> suficiente para hacer el equivalente a randint(1,7)
>> - No puedo sumar 7 "tiradas" de randint(1,5) y dividir entre 5 porque la
>> distribución no sería plana.
>> - Al no ser una potencia de dos no puedo convertir a binario la función
>> randint(1,5) y codificar los bits del número. Ejemplo 1 y 3 es un 0, 2 y 4
>> es un 1 y 5 vuelvo a calcular. 2^3=8, por lo que tres bits de tiradas
>> binarias me darían números del 0 al 7, no del 1 al 7.
>>
>> Ahora diría en alto lo que me parece una solución válida que me ha venido
>> a la cabeza: lo mismo que con la función randint(1,5) desechaba cuando
>> salía 5 para simular tiradas de cara o cruz, puedo eliminar cuando el
>> resultado de calcular 3 bits me da un número que equivale a 0. Pensaría si
>> cumple con las restricciones del enunciado (creo que si) y pasaría a una
>> implementación rápida.
>>
>> def rand_0_1() -> int:
>>  while True:
>>   num = randint(1, 5)
>>   if num==5:
>>   continue
>>   return num % 2
>>
>> def randint_1_7() -> int:
>>  while True:
>>   num = rand_0_1() * 4 + rand_0_1() * 2 + rand_0_1()
>>   if num:
>>  return num
>>
>> Le comentaría que lo suyo sería hacer una función de test para quedarme
>> tranquilo con que el resultado es correcto y poder refactorizar en el
>> futuro si se me ocurre una solución mejor. Escucharía si quiere dejarlo
>> aquí o si quiere ver la función que haga el test (que no es trivial, pero
>> tampoco demasiado complicada). Pero la función de test ya se escapa a tu
>> propuesta ;-)
>>
>> Un saludo,
>>
>> Javi
>>
>>
>> El mié., 3 jul. 2019 a las 1:50, Jose Caballero (<
>> jcaballero@gmail.com>) escribió:
>>
>>> Hola,
>>>
>>> a un colega le han preguntado durante una entrevista de trabajo lo
>>> siguiente:
>>> ¿cómo generar una distribución plana de enteros aleatorios, del 1 al 7,

Re: [Python-es] proteccion de codigo

2018-04-04 Por tema Daπid
2018-04-05 2:06 GMT+02:00 Mario Lacunza :

> Hola,
>
> a ver entre #1 y #3 tienes un problema de diseño, si estás haciendo un
> sistema web el cual corre por ende en el servidor q TU debes controlar para
> q quieres protegerlo? si lo q tu vendes me imagino será el acceso al
> mismo.. o lo q pretendes es vender el sistema web server completo para q
> cualquiera lo instale en SU servidor? esto último de nuevo es la peor forma
> de llevarlo a cabo.
>

No necesariamente. Puedes distribuir una manylinux wheel compilada con
Cython. El usuario sólo necesitaría instalar unos pocos paquetes, y a
correr.

Como te han dicho no hay sistema seguro, sólo demoras el tiempo q a alguien
> le lleve descompilarlo, para evitarlo, véndele servicios agregados a tu
> sistema, actualizalo constantemente ofrece soporte especializado, etc hay
> muchas vias indirectas de evitar q te descompilen el software.
>

Tampoco hay que exagerar. Dependiendo de cómo de interesante y caro sea el
proyecto, el código C generado por Cython es de por sí extremadamente
complejo:

  {
  double __pyx_temp_scalar = 0.0;
  {
  Py_ssize_t __pyx_temp_extent = __pyx_v_marginal_.shape[0];
  Py_ssize_t __pyx_temp_idx;
  double *__pyx_temp_pointer = (double *) __pyx_v_marginal_.data;
  for (__pyx_temp_idx = 0; __pyx_temp_idx < __pyx_temp_extent;
__pyx_temp_idx++) {
*((double *) __pyx_temp_pointer) = __pyx_temp_scalar;
__pyx_temp_pointer += 1;
  }
  }
  }

Y esto es antes de pasarlo por GCC. ¿Alguien se atreve a descifrarlo?
(Solución más abajo)

En uno de mis códigos, elegido al azar, 232 líneas de Python se convierten
en 29560 de C.


Hay otras herramientas, pero no las conozco, yo uso Cython por velocidad,
pero sé que hay quien lo usa para ofuscar.



/David.

Solución: poner a 0 todos los elementos de un array unidimensional.
Exactamente, marginal_[:] = 0
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] proteccion de codigo

2018-04-04 Por tema Daπid
1 Sí, pero no está diseñado con eso en mente, así que no es fácil. Lo más
sencillo, en mi opinión, sería compilar ciertos módulos en Cython y
distribuir el binario o el código en C. El módulo principal seguría siendo
Python, pero ahí sólo tienes que poner código más o menos trivial que carga
directamente del compilado.
3 Muchas bibliotecas en Python tienen licencia BSD o equivalente, que sí te
permitiría redistribuir código propietario. Django es una de ellas. GPL sí
que te podría dar problemas, según cómo lo uses.


/David.

2018-04-03 22:55 GMT+02:00 juan carlos rebate :

> buenas noches, antes de nada decir que soy nuevo en python y tengo algunas
> dudas que no puedo resolver por ningun lado.
> 1 puedo crear y distribuir programas privados y cerrados con python?.
> 2 he leido que se proporciona una herramienta pura para construir binarios
> de python; la utilidad segun se cuenta en la wiki es propia y pura, se
> llama freeze pero almenos en la version 16.04.4 de ubuntu no se incluye,
> esta utilidad bastaria para proteger mi app? existen restricciones de
> licencia con esta tecnica?.
> 3 mi programa o app es un sistema web construido desde cero, sin usar
> ningun añadido como django para no depender de licencias de terceros, como
> podria hacer que el servidor web cargue la app siendo esta un ejecutable?.
> destacar que vengo de php y c#
> si alguien me pudiese ayudar se lo agradeceria en el alma
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Obtención de Sumandos para un Target a partir de una colección de valores

2018-02-09 Por tema Daπid
La forma eficiente de resolver el problema es usando programación dinámica
(dynamic programming), y es equivalente a uno de los problemas clásicos:
dar cambio en monedas. Hay mucha documentación al respecto, sobre todo en
inglés.

Un par de enlaces, sin garantía de calidad:

https://interactivepython.org/runestone/static/pythonds/Recursion/DynamicProgramming.html
https://es.wikibooks.org/wiki/Programaci%C3%B3n_din%C3%A1mica/Problema_de_las_monedas_con_programaci%C3%B3n_din%C3%A1mica

Si te interesa, mi recomendación es que estudies programación dinámica en
general, en cuanto lo pilles, aplicarlo a tu problema es fácil.

/David.

2018-01-12 21:35 GMT+01:00 Manuel A. Estevez Fernandez :

> Hola a todos, tengo la siguiente necesidad:
>
> Encontrar una combinación de valores pertenecientes a una colección cuyo
> resultado sea un numero determinado.
>
> Algo así:
> id target valores
> 1 100 20
> 1 100 30
> 1 100 50
> 1 100 15
> 1 100 45
> 1 100 60
> 2 150 75
> 2 150 75
> 2 150 100
> 3 1500 900
> 3 1500 500
> 3 1500 600
> 3 1500 1000
> 3 1500 750
> 3 1500 200
> 3 1500 300
> 3 1500 10
> 3 1500 30
> 3 1500 50
>
> Toda esta información la tengo en un archivo csv. El cual leo y genero un
> diccionario:
>
>  {
>id : {  target : target , values : [ valores ] }
>   ,  id : { target : target , values : [ valores ] }
> }
>
> con el siguiente codigo realizo un matriz de verdad de la longitud de la
> cantidad de los valores por ID, y realizo la suma si es lo del target +1-1
> con ese vale.
>
> import numpy as np
> import itertools
>
> for id in in diccionario :
> for tup in itertools.product([0,1] , repeat=len(diccionario[id]['
> values'])):
> resultado = np.sum( np.dot(  np.array(list(tup)) , np.array(
> diccionario[id]['valores'] ) ) )
> if ( diccionario[id]['target'] - 1) <= resultado and resultado <=  (
> diccionario[id]['target'] + 1) :
> print 'ID : ', id, ' Combinacion : ' , tup , 'Valores ',
> diccionario[id]['valores']
> break
>
>
>
> La problematica que tengo es que obviamente entre mas grande sea la
> cantida de valores la combinaciones serán muchas más.
>
> Tengo la idea de utilizar un poco de paralelizar, pero no tengo idea de
> como empezar.
>
> No sé como hacerlo o si sea posible lo siguiente:
> Lanzar un proceso por ID.
> -Generar una segmentación de la matriz de verdad y asignarla un subproceso
> -Cuando algún subproceso encuentre un resultado válido, lo devuelva y se
> detengan los subprocesos
> -Avanzar al siguiente ID.
>
> Saludos y gracias de antemano.
>
>
>
> Manuel Alejandro Estévez Fernández
>
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Problema de variables con Pulp

2017-11-15 Por tema Daπid
Estás añadiendo una restricción por cada tipo de soldado, así que tienes
que instanciar cuatro LpConstraints:

for i in soldados: prob += LpConstraint(num_soldados[i],
sense=LpConstraintLE, rhs=poblacion[i])


2017-11-15 13:25 GMT+01:00 Carlos Agullo <cm.agu...@gmail.com>:

> Muchas gracias David!!!
>
> Ahora he aprendido algo más (lo de las 'Constraints') lo único es que
> cuando pongo sólo lo que tú me dices me da error diciendo que "i" no está
> definida. Si lo pongo así:
>
> prob += LpConstraint(num_soldados[i], sense=LpConstraintLE,
> rhs=poblacion[i]) for i in soldados
>
> me dice "invalid syntax"
>
> y si lo pongo dentro del paréntesis, así:
>
> prob += LpConstraint(num_soldados[i] for i in soldados,
> sense=LpConstraintLE, rhs=poblacion[i] )
>
> me dice "Generator expression must be parenthesized if not sole argument"
>
> Así que aunque entiendo lo de las "constraints" no consigo usarlo bien
>
>
>
>
> El 15 de noviembre de 2017, 13:04, Daπid <davidmen...@gmail.com> escribió:
>
>> Necesitas añadirlos como constraints:
>>
>> for i in soldados:
>> prob += LpConstraint(num_soldados[i], sense=LpConstraintLE,
>> rhs=poblacion[i])
>>
>> Explicación: en Python a < b se ejecuta de inmediato, Pulp necesita la
>> expresión de alguna forma "simbólica", de ahí que tengas que dividirlo en
>> la variable que estás restringiendo y el valor, o rhs (right hand side, la
>> parte derecha de la expresión). Sense is el tipo de restricción, en este
>> caso, LE less or equal, menor o igual.
>>
>> La documentación en cuestión, no la más clara que podría ser:
>> https://www.coin-or.org/PuLP/pulp.html#pulp.LpConstraint
>>
>> Nótese que fácilmente lo puedes convertir en una restricción elástica, es
>> decir, puedes comprarle unos pocos soldados Jian a tu vecino por un precio
>> mayor, particularmente útil para ayudar la convergencia en problemas más
>> complicados (el tuyo se puede resolver analíticamente).
>>
>>
>> /David.
>>
>>
>>
>>
>> 2017-11-15 12:10 GMT+01:00 Carlos Agullo <cm.agu...@gmail.com>:
>>
>>> Hola, estoy intentando resolver un problema típico de "Blending Problem"
>>> con Pulp y no consigo poner bien las variables (concretamente el
>>> diccionario de variables)
>>>
>>> Este es el diccionario que quiero crear:
>>>
>>> num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0,
>>> cat='Integer')
>>>
>>> pero me gustaría poner un límite superior para cada variable que tengo
>>> en un diccionario llamado poblacion.
>>>
>>> He intentado poner la restricción dentro de la definición del
>>> diccionario de variables así:
>>>
>>> num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0,
>>> upBound=poblacion[soldados], cat='Integer')
>>>
>>> y también he intentado ponerlo al agregar el resto de restricciones del
>>> problema:
>>>
>>> prob += (num_soldados[i] < poblacion[i]  for i in soldados
>>>
>>> y en ambos me da error. ¿cómo puedo poner un límite superior a las
>>> variables?
>>>
>>> A continuación pongo el código completo que no me da error por si sirve
>>> de ayuda:
>>>
>>>
>>> from pulp import *
>>>
>>> # Declarar variables
>>> soldados = ['Feng', 'Liu', 'Zhao', 'Jian']
>>> presupuesto = 1
>>>
>>> #Diccionario con los costes de cada tipo de soldado
>>> coste = {'Feng':13,
>>>   'Liu':21,
>>>   'Zhao':17,
>>>   'Jian':100}
>>>
>>> #Diccionario con la fuerza de cada tipo de soldado
>>> fuerza = {'Feng':6,
>>>   'Liu':10,
>>>   'Zhao':8,
>>>   'Jian':40}
>>>
>>> #Diccionario con la población máxima de cada tipo de soldado
>>> poblacion = {'Feng':1000,
>>>   'Liu':400,
>>>   'Zhao':500,
>>>   'Jian':150}
>>>
>>> #Crear la variable 'prob' que contiene los datos del problema
>>> prob = LpProblem ("A Blending Problem", LpMaximize)
>>>
>>> #Crear un diccionario llamado "num_soldados" donde se definen las
>>> variables
>>> num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0,
>>> cat='Integer')
>>>
>>> #Función objetivo
>>> prob += lpSum(f

Re: [Python-es] Problema de variables con Pulp

2017-11-15 Por tema Daπid
Necesitas añadirlos como constraints:

for i in soldados:
prob += LpConstraint(num_soldados[i], sense=LpConstraintLE,
rhs=poblacion[i])

Explicación: en Python a < b se ejecuta de inmediato, Pulp necesita la
expresión de alguna forma "simbólica", de ahí que tengas que dividirlo en
la variable que estás restringiendo y el valor, o rhs (right hand side, la
parte derecha de la expresión). Sense is el tipo de restricción, en este
caso, LE less or equal, menor o igual.

La documentación en cuestión, no la más clara que podría ser:
https://www.coin-or.org/PuLP/pulp.html#pulp.LpConstraint

Nótese que fácilmente lo puedes convertir en una restricción elástica, es
decir, puedes comprarle unos pocos soldados Jian a tu vecino por un precio
mayor, particularmente útil para ayudar la convergencia en problemas más
complicados (el tuyo se puede resolver analíticamente).


/David.




2017-11-15 12:10 GMT+01:00 Carlos Agullo :

> Hola, estoy intentando resolver un problema típico de "Blending Problem"
> con Pulp y no consigo poner bien las variables (concretamente el
> diccionario de variables)
>
> Este es el diccionario que quiero crear:
>
> num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0,
> cat='Integer')
>
> pero me gustaría poner un límite superior para cada variable que tengo en
> un diccionario llamado poblacion.
>
> He intentado poner la restricción dentro de la definición del diccionario
> de variables así:
>
> num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0,
> upBound=poblacion[soldados], cat='Integer')
>
> y también he intentado ponerlo al agregar el resto de restricciones del
> problema:
>
> prob += (num_soldados[i] < poblacion[i]  for i in soldados
>
> y en ambos me da error. ¿cómo puedo poner un límite superior a las
> variables?
>
> A continuación pongo el código completo que no me da error por si sirve de
> ayuda:
>
>
> from pulp import *
>
> # Declarar variables
> soldados = ['Feng', 'Liu', 'Zhao', 'Jian']
> presupuesto = 1
>
> #Diccionario con los costes de cada tipo de soldado
> coste = {'Feng':13,
>   'Liu':21,
>   'Zhao':17,
>   'Jian':100}
>
> #Diccionario con la fuerza de cada tipo de soldado
> fuerza = {'Feng':6,
>   'Liu':10,
>   'Zhao':8,
>   'Jian':40}
>
> #Diccionario con la población máxima de cada tipo de soldado
> poblacion = {'Feng':1000,
>   'Liu':400,
>   'Zhao':500,
>   'Jian':150}
>
> #Crear la variable 'prob' que contiene los datos del problema
> prob = LpProblem ("A Blending Problem", LpMaximize)
>
> #Crear un diccionario llamado "num_soldados" donde se definen las variables
> num_soldados = LpVariable.dicts("soldiers", soldados, lowBound=0,
> cat='Integer')
>
> #Función objetivo
> prob += lpSum(fuerza[i]*num_soldados[i] for i in soldados), "Fuerza total
> del ejército"
>
> #Agregar las restricciones al 'prob'
> prob += lpSum(coste[i]*num_soldados[i] for i in soldados) <= presupuesto
>
>
> #Resolver el problema
> status = prob.solve()
> LpStatus[status]
>
> # imprimir resultados
> for v in prob.variables():
> print(v.name, "=", v.varValue)
>
> print("La fuerza total del ejército es: ", value(prob.objective))
>
>
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Ayuda con cuadrado aleatorio en TKinter

2017-10-27 Por tema Daπid
2017-10-26 13:15 GMT+02:00 jose ignacio otero bueno :

> En primer lugar hay algunos errores, para llamar a la librería
> tkinter, la instrucción es:
>
> import Tkinter
>


En Python2 es con mayúscula, en Python3 es con minúscula.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Ayuda con cuadrado aleatorio en TKinter

2017-10-26 Por tema Daπid
rectangulo_aleatorio es una función, que viene a ser una receta. Y de la
misma manera que no puedes comer libros de cocina, sino que tienes que
usarlos para cocinar, el contenido de la función sólo es ejecutado cuando
la llamas.

rectangulo_aleatorio(lienzo, 20, 30)
rectangulo_aleatorio(lienzo, 50, 10)

Una de las razones de ser de las funciones es que las puedes llamar varias
veces, con diferentes argumentos.

Es posible que necesites ejecutar "ventana.mainloop()" para que Tk dibuje
la ventana, dependinendo de tu sistema operativo y configuración. En mi
caso, en Linux, Python no necesita mainloop, pero ipython sí, a menos que
intente salir (Ctrl+D dispara la ventana). mainloop debe ser la última cosa
que ejecutas en Tk.

2017-10-21 15:55 GMT+02:00 Turriano :

> Saludos.
> Este es mi primer post y aprovecho para saludar a toda la lista.
> Soy semi-novato.
> Bueno, novato-novato! :-P
> Y estoy siguiendo este interesante tutorial:
> https://argentinaenpython.com/quiero-aprender-python/doma-
> de-serpientes-para-ninos_swfk-es-win-0.0.4.pdf
>
> Está bien, es divertido, con buen humor y fácil de seguir, por lo cual se
> lo recomiendo a los mega-neófitos como yo.
> El problema, es que algunos ejercicios tienen algún error tipográfico y
> por otra parte, cuando se avanza un poco en el libro, se dan algunas cosas
> por sabidas.
> Es por ello que os pongo este ejercicio en el que me he quedado trabado:
>
> El ejercicio trata de realizar un cuadrado aleatorio en una ventana de
> TKinter:
>
> *# Canvas rectángulo*
> *from tkinter import **
> *ventana = Tk()*
> *lienzo = Canvas(ventana, width=400,height=400)*
> *lienzo.pack()*
> *import random*
> *def rectangulo_aleatorio(lienzo, ancho, alto):*
> * x1 = random.randrange(ancho)*
> * y1 = random.randrange(alto)*
> * x2 = x1 + random.randrange(ancho-x1)*
> * y2 = y1 + random.randrange(alto-y1)*
> * lienzo.create_rectangle(x1, y1, x2, y2)*
>
> ¡Y no me funciona!
> ¿Qué hago mal?
> Si al final consigo hacer que todos los ejercicios funcionen, los
> publicaré en algún lado, para los que se encuentren con el mismo problema.
>
> ¡Gracias por leerme!
>
>
> 
>  Libre
> de virus. www.avast.com
> 
> <#m_7761090323281198287_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] ¿cómo anunciar un proyecto para que la comunidad participe en su desarrollo?

2017-06-26 Por tema Daπid
2017-06-24 4:39 GMT+02:00 Jose Caballero :

> Así que pienso que tal vez la única forma de ver esos proyectitos salir
> adelante sería "liberarlos" y dejar que la comunidad se encargue de ellos,
> si así lo considerase oportuno (quizás no sean tan interesantes como a mí
> me lo pueden parecer).
>

No cuentes con ello. A menos que sean verdaderamente muy interesantes, o
alguien lo use en su trabajo, la probabilidad es baja. Y como ejemplo, mira
numexpr: una biblioteca fantástica, con bastantes usuarios, que cuando
Francesc no pudo seguir manteniéndola, se quedó huérfana por meses (y aún
ahora, sigue medio huérfana).

Pero, en todo caso, tener una biblioteca a medio hacer, es mejor que no
tener nada, y nunca sabes cuando alguien va a darle un empujón.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Ayuda Import Error: No module Python

2017-05-27 Por tema Daπid
¿Has instalado freeling? ¿Cómo?

2017-05-27 7:30 GMT+02:00 Mario Alfonso Saucedo Gomez :

> Buenas tardes Estimados,
>
> Tengo un servidor Linux distribución Ubuntu 16.04, python 2.7 . He
> instalado algunas librerías pero algunas me están generando el siguiente
> error que describo a continuación :
>
> /usr/bin/python2.7 /home/Jrojas/PycharmProjects/University/Test.py
> Traceback (most recent call last):
>   File "/home/Jrojas/PycharmProjects/University/Test.py", line 5, in
> 
> import freeling
> ImportError: No module named freeling
>
>
> Consultando en la red se refiere a compartir librerías(Shared, CCFLAG)
> entre versiones la verdad no he podido solucionarlo he ejecutado el comando
> ldconfig y alparecer no me corrige la situación. Alguno de ustedes ha
> tenido este percance y como lo ha solucionado.
>
> Saludos,
>
> Gracias.
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Cambio de enteros a flotantes

2017-03-14 Por tema Daπid
Creo que sigue habiendo algo mal. La distribución de números es
uniforme en todo el rango de int32.

2017-03-14 18:11 GMT+01:00 Rolando Paz <flx...@gmail.com>:
> Hola amigos
>
> Con la ayuda de un amigo Sven Marnach hice esto:
>
> import numpy as np
>
> array = np.fromfile('pocobe4_r19_v18_r20.dat',
> dtype=np.int32).astype(np.float32)
> with open("prueba_out", "wb") as prueba_out:
> prueba_out.write(array.tostring())
>
> Ahora obtengo un archivo binario.
>
> Que opinan?
>
> El 14 de marzo de 2017, 9:12, Kiko <kikocorre...@gmail.com> escribió:
>>
>>
>>
>> El 14 de marzo de 2017, 16:00, Daπid <davidmen...@gmail.com> escribió:
>>>
>>> Lo he probado con el adjunto, y parece que lo que tienes no son
>>> objetos de 32 bits, porque el tamaño no es múltiplo. Así que o tienes
>>> otro tipo de datos (si fueran 16 bits tendrías casi 11 millones de
>>> números), o hay una cabecera. No creo que sean 8 o 16 bits porque la
>>> distribución de valores es completamente uniforme, a menos que sean
>>> datos aleatorios.
>>>
>>> genfromtxt y amigos te sirven para leer ficheros de texto, no binarios.
>>
>>
>> Mi culpa. He leído los correos en diagonal...
>>
>>>
>>>
>>> 2017-03-14 15:34 GMT+01:00 Rolando Paz <flx...@gmail.com>:
>>> > Gracias Kiko, lo intentare.
>>> >
>>> > David al ejecutar el pequeño script sobre mi archivo binario, obtengo
>>> > un
>>> > archivo binario (supongo de flotantes) pero solo tiene cuatro
>>> > valores...
>>> >
>>> > Adjunto el contenido de cada archivo usando ghex.
>>> >
>>> > Que opinas?
>>> >
>>> > Saludos
>>> >
>>> >
>>> > 2017-03-14 8:19 GMT-06:00 Daπid <davidmen...@gmail.com>:
>>> >>
>>> >> 2017-03-14 14:41 GMT+01:00 Rolando Paz <flx...@gmail.com>:
>>> >> > array = np.fromstring("data", dtype=np.int32).astype(np.float32)
>>> >>
>>> >> Te sobran las comillas en "data".
>>> >> ___
>>> >> Python-es mailing list
>>> >> Python-es@python.org
>>> >> https://mail.python.org/mailman/listinfo/python-es
>>> >
>>> >
>>> >
>>> > ___
>>> > Python-es mailing list
>>> > Python-es@python.org
>>> > https://mail.python.org/mailman/listinfo/python-es
>>> >
>>> ___
>>> Python-es mailing list
>>> Python-es@python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>
>>
>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Cambio de enteros a flotantes

2017-03-14 Por tema Daπid
Lo he probado con el adjunto, y parece que lo que tienes no son
objetos de 32 bits, porque el tamaño no es múltiplo. Así que o tienes
otro tipo de datos (si fueran 16 bits tendrías casi 11 millones de
números), o hay una cabecera. No creo que sean 8 o 16 bits porque la
distribución de valores es completamente uniforme, a menos que sean
datos aleatorios.

genfromtxt y amigos te sirven para leer ficheros de texto, no binarios.

2017-03-14 15:34 GMT+01:00 Rolando Paz <flx...@gmail.com>:
> Gracias Kiko, lo intentare.
>
> David al ejecutar el pequeño script sobre mi archivo binario, obtengo un
> archivo binario (supongo de flotantes) pero solo tiene cuatro valores...
>
> Adjunto el contenido de cada archivo usando ghex.
>
> Que opinas?
>
> Saludos
>
>
> 2017-03-14 8:19 GMT-06:00 Daπid <davidmen...@gmail.com>:
>>
>> 2017-03-14 14:41 GMT+01:00 Rolando Paz <flx...@gmail.com>:
>> > array = np.fromstring("data", dtype=np.int32).astype(np.float32)
>>
>> Te sobran las comillas en "data".
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Cambio de enteros a flotantes

2017-03-14 Por tema Daπid
2017-03-14 14:41 GMT+01:00 Rolando Paz :
> array = np.fromstring("data", dtype=np.int32).astype(np.float32)

Te sobran las comillas en "data".
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Cambio de enteros a flotantes

2017-03-14 Por tema Daπid
> Me pueden sugerir alguna forma de cambiar un archivo binario de 32 bits 
> enteros a un archivo binario de 32 bits flotantes?

Yo usaría Numpy, si te puedes permitir la dependencia.

array = np.fromstring(open(f_in).read(), dtype=np.int32).astype(np.float32)
with open(f_out, 'wb') as f_out:
   f_out.write(array.tostring())

2017-03-14 2:02 GMT+01:00 Miguel de Dios Matias :
> Así a voz de pronto vas a perder precisión porque creo que solo
> tendrías 6 dígitos y el resto exponente frente a un entero que
> tendrías mas o menos 9 dígitos.

Sólo a partir de 8388607
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Python 3.5.2

2016-12-24 Por tema Daπid
2016-12-24 17:52 GMT+01:00 Johnny Alonso :
> Aquí los resultados con el operador ** coinciden, -4 en ambos casos, y lo
> acepto como correcto desde el punto de vista del lenguaje, pero no desde el
> punto de vista matemático, pues matemáticamente las expresión -2² es
> diferente a -(2²).

La convención usual en libros de matemáticas superiores es que -2^2
(léase menos dos al cuadrado) es -4. Es decir, -x^2 = -(x^2)

Por desgracia, los libros elementales no siguen siempre la misma
convención, y tarde o temprano acaba causando confusión. Por ejemplo,
la función x^2 (equis cuadrado) es convexa según casi cualquier libro
avanzado, pero la mitad de los libros básicos la consideran cóncava. Y
me sé tres definiciones diferentes de la transformada de Fourier,
según si mires un libro de física teórica, óptica o ingeniería (seis
si cuentas cuál es la directa y cuál es la inversa); y siempre hay que
mirar cuál están usando exactamente.

> Conjetura: Python no implementa el operador menos unario, pero si el binario
> el cual tiene menor precedencia que el de potenciación, así:
>
> -x**n es interpretado en Python como 0-x**n.

Sí que la implementa.

dis.dis(lambda x:-x**2)
  1   0 LOAD_FAST0 (x)
  3 LOAD_CONST   1 (2)
  6 BINARY_POWER
  7 UNARY_NEGATIVE
  8 RETURN_VALUE


Si quieres negar tu propia clase, tienes que implementar el método __neg__(self)


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Importar el modulo pyptables

2016-12-21 Por tema Daπid
Tiene pinta de ser un problema con py3. tables.py debería ser importado
localmente (del archivo adyacente), pero en py3 los importes son absolutos,
por lo que "import tables" se refiere a la biblioteca tables (Pytables,
nada relacionado con tu caso).

La solución es algo así :

from .tables import Tables, Table


On 21 Dec 2016 21:20, "Maximiliano Zapata Marín" 
wrote:

Hola a todos, estoy trantando de importar el modulo pyptables con python3 y
no encuentra el nombre 'Tables', el error es el siguiente:

In [1]: import pyptables
---
ImportError   Traceback (most recent call last)
 in ()
> 1 import pyptables

/usr/local/lib/python3.4/dist-packages/pyptables/__init__.py in ()
  2 import subprocess
  3
> 4 from tables import Tables, Table
  5 from chains import BuiltinChain, UserChain
  6 from rules import Rule, Accept, Drop, Jump, Redirect, Return, Log,
CustomRule

ImportError: cannot import name 'Tables'

Ya instale pyptables y tables vía pip3.

¿Alguna ayuda?

-- 
Maximiliano Zapata Marín
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Extendiendo de dict

2016-11-01 Por tema Daπid
2016-11-01 13:37 GMT+01:00 Chema Cortes :
> nte a la intiuición, los diccionarios se inicializan al crear la instancia,
> en lo que sería el método __new__:

Nunca he entendido la diferencia entre __new__ y __init__. ¿Cuándo se usa cuál?
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] algo similar a matplotlib subplots() con la version 0.99.1.2.-1

2016-10-24 Por tema Daπid
2016-10-24 21:40 GMT+02:00 Jose Caballero :
> El problema es que trabajo en RedHat 6, y el unico RPM que encuentro
> es de la version 0.99, que no include subplots().

Esa version es antiquísima, y llena de bugs. Hicieron un buen esfuerzo
limpiando para la versión 1.0

> -- alguien sabe donde puedo encontrar el RPM para el6 de una version
> mas reciente que la 0.99 ?

Evita interferir con tu sistema de paquetes. Crea un virtualenv e
instala todos los paquetes al día, o usa Conda (u otra distribución).


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Virtualenv proyecto limpio

2016-09-30 Por tema Daπid
Pregunta tonta: has activado el virtualenv antes de ejecutar pip freeze?

On 30 Sep 2016 10:10, "kausdiv"  wrote:

> Hola a todos.
>
> Por comodidad (lo reconozco), en python tengo instalado lo que más uso:
> PyQt, SQLAlchemy, numpy y poco más.
>
> Ahora haciendo un curso de Django, quiero crear una virtualización, pero a
> ser posible limpia.
>
> Es decir que no me arrastre (PyQt... etc).
>
> He probado:
>
> virtualenv --no-site-packages prueba
>
> al activarlo y hacer pip freeze sigue estando todos los paquetes
> anteriores.
>
> ¿ Sabéis si se puede hacer lo que digo ?
>
> Que se instale con lo necesario de python nada más.
>
>
> Saludos.
>
>
>
>
> ___
> 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/


Re: [Python-es] De paquetes y de huevos

2016-09-29 Por tema Daπid
2016-09-29 16:05 GMT+02:00 691671947 :
> si existe el paquete e usado apt-get o aptitude para instalar dependencias
> del ssoo, el commando pip install solo e usado en el caso de virtualenv
> activado.

Ese es el uso correcto,  y entonces no necesitas sudo.

El problema viene cuando usas sudo pip install sobre la instalación
del sistema, mezclando lo que pip y apt-get te dan.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] De paquetes y de huevos

2016-09-29 Por tema Daπid
2016-09-29 15:33 GMT+02:00 Antonio Beamud Montero :
> Como ya sabéis las distribuciones de linux empaquetan una serie de librerías
> y utilidades de python en una versión concreta. Cuando desarrollas algo
> sobre python, y necesitas alguna librería que no está disponible en paquete
> para tu distribución, normalmente tiras de huevos (que mal suena eso :D) y
> lo instalas vía pip/easy_install...

No tengo una respuesta a tu pregunta (el gran problema de
empaquetamiento en Python), pero ahora lo que mola no son los huevos,
son las ruedas.

http://pythonwheels.com/

Y, por cierto, easy_install debe morir.

Y ya que estamos condenando a muerte, los daños colaterales vienen
cuando la gente usa "sudo pip install", aberración que debería
desaparecer de las documentaciones.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Insertar registros cada segundo

2016-05-03 Por tema Daπid
2016-05-03 17:31 GMT+02:00 David Samaniego :
> Alguna sugerencia de como puedo llevar a cabo la idea??

t0 = time.time()
# consulta smnp
elapsed = time.time() - t0
if elapsed < 1:
time.sleep(1 - elapsed)

Sería bueno guardar el tiempo, porque la red puede caerse
temporalmente, o el servidor tardar más de un segundo en responder.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Escritura en archivos binarios

2016-01-27 Por tema Daπid
2016-01-27 15:40 GMT+01:00 Pixu Kideak :
>
> archivo.seek(1) #Esta es la posición en la que me interesa modificar el
contenido.
> archivo.write(21) #Digamos que quiero escribir ! - que HEX es 21 - en esa
dirección.
>
> Pero no consigo escribirlo puesto que parece que write recibe sólo
variables de tipo str.


¿Es esto?

archivo.write(hex(21))

hex(21) devuelve '0x15'

> Cuando se esta realizando la asignación archivo = open(ficheroLeer,
'r+b') ¿no se estaría trabajando contra el objeto "archivo" qué está en
memoria?

No. Acabo de modificar un caracter de un archivo de 24 GB. El proceso ha
sido casi instantáneo, sin un consumo de RAM o IO apreciable, y
prácticamente instantáneo. Ignoro qué optimizaciones específicas el sistema
de archivos puede estar haciendo, pero desde luego, no está leyéndolo todo.


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] IOError: [Errno 13] Permission denied

2016-01-23 Por tema Daπid
2016-01-23 12:03 GMT+01:00 David Rodríguez :

>
>
> fichero=open('/sys/devices/pci:00/:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brigthness','w')
> dato_listo=fichero.write("300")
> fichero.close()
>

Una posible idea:

open en modo 'w' elimina todo el contenido del archivo, por lo que por
cierto tiempo, estaría vacío, y el sistema operativo no te deja. Si estoy
en lo cierto, esto debería funcionar:

os.system('cat 300 > /sys/devices...')


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] numpy.absolute

2015-12-20 Por tema Daπid
On 20 Dec 2015 05:16, "Rolando Paz"  wrote:
> open_bram = open(args.bram, 'r')
> bram = open_bram.readlines()
>
> cols = np.loadtxt(bram, dtype=str)

A np.loadtxt le puedes pasar el nombre de archivo directamente, así que
esas tres líneas se colapsan en :

cols = np.loadtxt(args.bram)

Si necesitas especificar el dtype, usa np.float64, ahora tienes un array de
strings. La transformada de Fourier te funciona porque lo primero que hace
es convertir el input a uno de los sabores de float que entiende.

/David
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] 'Heredar' un venv dentro de otro

2015-11-29 Por tema Daπid
2015-11-29 23:08 GMT+01:00 Kiko :

>
> For the record, acabo de instalar un venv con numpy, scipy,
> matplotlib, pandas y jupyter/ipython y creo que va por los 300Mb y un
> buen rato de instalaciones/compilaciones.
>

La opción más sencilla que se me ocurre, y según el uso que le quieras dar
te puede servir, es clones con symbolic links en lugar de copias. El
problema es que los hijos no estarían encapsulados, y si a uno le da por
actualizar numpy, se propaga al resto. Puedes evitarlo haciéndolo de solo
lectura:

https://askubuntu.com/questions/243380/how-to-create-a-read-only-link-to-a-directory
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Instalar Python de 32 o 64 bits

2015-10-29 Por tema Daπid
2015-10-29 18:13 GMT+01:00 Jesús Quintero Suárez :

> Gracias Kiko, ¿Existe algo en Python de 64 bits que no esté disponible
> para la de 32 bits o viceversa?.


Un procesador de 64 bits puede ejecutar un proceso de 32, pero no al revés.
Por otro lado, un proceso de 32 bits sólo puede usar, como máximo, unos 3
GB de RAM [1].

Esa es la parte teórica. En la práctica, si dependes de otras bibliotecas
que incluyen código compilado, y sólo se distribuyen para 64 bits, tendrías
que compilarlas tú mismo. (No sé cómo de frecuente es esto).


[1] https://en.wikipedia.org/wiki/3_GB_barrier

/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Error al finalizar programa

2015-10-28 Por tema Daπid
2015-10-15 22:24 GMT+02:00 Javier Alonso :

> me sale en la consola un mensaje del tipo "alloc: invalid block: 02E10AA0:
> 78 2" .  Este mensaje cambia al volver a ejecutar el programa, y Python
> deja de funcionar.
> Utilizo Python 3.4.3  desde Windows 7.
>

El programa es correcto. ¿Cómo los has instalado?
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Daπid
2015-08-26 11:47 GMT+02:00 Gonzalo V gvm2...@gmail.com:

 Tenia entendido que era While true daba el resultado . ¿Cómo lee el
 intérprete while 1: Que reintente 1 sola vez?


while algo:

se interpreta como:

while bool(algo):

donde bool() convierte el objeto en True / False.



 ¿Cuál sería el código para reintentos controlados (que reintente 3 veces,
 por ejemplo )?


No uses un while, usa un for:

for i in range(3):
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Daπid
2015-08-26 13:41 GMT+02:00 Gonzalo V gvm2...@gmail.com:

 perdon, soy nuevo en python
 si  hago un for i in range(3): va a dar 3 pasadas aunque sea true?. La
 idea es que si la conexion es true pase 1 vez y si falla de 3 pasadas.
 Muchas gracias!


¿Aunque qué sea true?

Lo que tienes que hacer es, una vez que la conexión sea establecida, parar.

for i in range(3):
   try:
  req=urllib.request.urlopen(''+line)
  ...
  break
except  urllib.error.HTTPError:
   # Try again.
   pass
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Como capturar la tecla Ctrl (exclusivamente, sin pulsar otra simultáneamente) en un programa de consola en Raspbian

2015-07-12 Por tema Daπid
On 12 Jul 2015 13:55, Miguel Salcedo trmsalc...@gmail.com wrote:

 He desarrollado un programa de consola en el cual necesito detectar el
momento en el que me pulsan la tecla Ctrl (solo Ctrl, sin pulsar ninguna
otra al mismo tiempo).

El comando xev de Xorg es capaz de detectar tanto cuando la aprietas como
cuando la sueltas. Si no encuentras nada más, puedes mirar a su código.

/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] RPMs para matplotlib y numpy

2015-06-22 Por tema Daπid
2015-06-22 17:27 GMT+02:00 Jose Caballero jcaballero@gmail.com:

 No se trata de una tarea en mi ordenador personal, sino en una maquina
 del curro, donde todo esta instalado con RPMs y mantenido con puppet.
 No se si en esas condiciones es buena idea mezclar dos sistemas
 diferentes de instalacion de librerias: RPMs y PIP, por ejemplo. No lo
 veo claro.


Lo que no es buena idea es mezclar dos repositorios que no están pensados
para funcionar juntos. Si instalas algo del repo de CENTOS que depende de
Numpy (por ejemplo, Scipy o Inkscape), estará compilado contra la versión
1.4. La ABI compatibility no está garantizada, así que tendrás segfaults.

Si no tienes nada más que dependa del numpy rpm (y créeme, esto es una
receta para el desastre), puedes descargarte el de Fedora (1.8.2 para
Fedora 21). También puedes bajarte su receta del rpm.src y crear una
versión actualizada para CENTOS.

No te olvides de ejecutar los tests: import numpy; numpy.test('full')


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] RPMs para matplotlib y numpy

2015-06-21 Por tema Daπid
2015-06-21 18:38 GMT+02:00 Jose Caballero jcaballero@gmail.com:


 Quería instalar matplotlib. Estaba intentando una instalación a partir
 de las fuentes de matplotlib-1.4.3, pero se queja porque necesita
 numpy 1.6 o superior.
 La última versión para numpy en el repo de CENTOS 6 is la 1.4, y el
 repo de EPEL no hay nada.


No mezcles en el sistema diferentes versiones. Otros RPM pueden depender de
Numpy, y esperar la versión 1.4.

En su lugar, instala virtualenv, crea uno, e instala numpy con pip. En
Linux compila sin problemas*.

Si vas a hacer álgebra lineal intensiva, instala o compila también ATLAS.


/David.

* Si tienes python-devel, gcc, etc.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Fwd: Modulo subprocess y Script Perl

2015-05-06 Por tema Daπid
2015-05-06 8:15 GMT+02:00 Juan Camilo Hernandez Diaz 
camilo.hernan...@gmail.com:

 Por el momento estoy ejecutando el script con con os.system que funciono
 sin problemas.


os.system es equivalente a subprocess.Popen con el argumento shell=True.


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] No se puede instalar numpy en entornos virtuales con python3.4

2015-04-13 Por tema Daπid
On 13 April 2015 at 16:18, Horacio horacio9...@gmail.com wrote:


 RuntimeError: Broken toolchain: cannot link a simple C program


Eso huele a compilador roto. Estás intentando instalar la versión de 32
bits, ¿tienes el compilador y las bibliotecas de 32 bits instaladas (glibc,
glibc-dev...)? Si las tienes, ¿puedes compilar a mano un Hello world en C?
En caso de que lo segundo falle, reinstala GCC.

/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Cómo convertir una lista flotante a una lista de enteros.

2015-02-19 Por tema Daπid
2015-02-19 14:31 GMT+01:00 Juan Pablo Fernandez Gutierrez 
jpfernan...@udem.edu.co:

 creo una lista con x=range(n), pero esta es un array y al usarlo como
 índice me genera error.


En Python3, range(n) crea un iterador. Si lo que quieres es una lista,
conviértelo: list(range(n)).
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Ploteo en tiempo real con PyAudio y Matplotlib

2014-10-11 Por tema Daπid
2014-10-11 17:16 GMT+02:00 Ricardo Cisterna r.cisternasan...@gmail.com:

 Sin embargo, a la hora de plotear los datos con matplotlib, a medida que
 los segundos avanzan el programa se va volviendo cada vez mas lento,
 produciéndose un desfase entre el gráfico mostrado y los sonidos del
 ambiente.


Esto suena a un problema que tuve hace bastante tiempo, y es que la figura
conservaba datos históricos, así que el uso de memoria se disparaba. En la
versión 1.0 se mejoró mucho, pero todavía quedaba una pequeña fuga. La
solución era ejecutar plt.clf() de vez en cuando, que elimina por completo
la basura acumulada.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Ploteo en tiempo real con PyAudio y Matplotlib

2014-10-11 Por tema Daπid
2014-10-11 23:37 GMT+02:00 Ricardo Cisterna r.cisternasan...@gmail.com:

 Olvidé mencionar que el software debe mantener el histórico de datos
 recopilados, de forma de que el gráfico muestra los datos desde el inicio
 de la grabación hasta el momento actual.


Mira que lo dudo. :)

Estás recibiendo 44100 muestras por segundo, suficientes para hacer un
gráfico suave que te llene la pantalla de lado a lado. Es perfectamente
razonable conservar en memoria los datos en crudo, pero no tienes que hacer
el gráfico con todos ellos.

Esencialmente, lo que quieres hacer es subsampling de tus datos, y sacar
por pantalla sólo eso. Dependiendo del tipo de sonidos que grabes y lo que
te importen problemas como aliasing, puedes simplemente hacer uno regular
usando la maquinaria de Numpy:

plt.plot(data[::int(rate)])

O tendrás que buscar algo más complicado (y computacionalmente costoso).

Si quieres pintar la forma de la onda según entra y los datos pueden ser
cualquier cosa, puedes copiar lo que Audacity hace.


/David
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Editar variables en aplicaciones de consola

2014-08-18 Por tema Daπid
2014-08-18 15:02 GMT+02:00 Chema Cortes pych...@gmail.com:

 editor = os.getenv('EDITOR')


En mi máquina (Fedora LXDE) no está definida, y el comando editor tampoco
existe. Sin embargo, siempre puedes tener vi en la recámara.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Problema en string

2014-08-13 Por tema Daπid
2014-08-13 19:08 GMT+02:00 Jean Carlos Rodrìguez 
jeancarlosr...@yahoo.com.dmarc.invalid:


 query_exec(INSERT INTO table (id, desc) VALUES  ({0},{1})
 .format(1,desc))

 pero cuando lee el caracter  de pulgadas lo cierra y me da error, ya he
 tratado haciendo para combinaciones y nada, si alguie ha tenido un error
 asi, o hay una manera de resolverlo mas facil, y no rebentarme la cabeza se
 lo agradeceria.


Python puede parsear esa expresión sin problemas. Las triples comillas
hacen que cuando sólo hay una, sea ignorada. El problema está en la base de
datos. Mi primera idea sería averiguar si esos caracteres están soportados,
y si lo están, cómo se escapan.

¿Cuál es el mensaje de error? Ayuda mucho, siempre conviene ponerlo.


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Ordenar diccionario

2014-08-11 Por tema Daπid
2014-08-11 20:57 GMT+02:00 Omar Gutiérrez omar@gmail.com:

 Por aquí un ejemplo de *OrderedDict*:

 http://pymotw.com/2/collections/ordereddict.html

 Yo tenía un problema similar con unos diccionarios que quería convertir a
 JSON. Espero que OrderedDict te ayude.


OrderedDict es un diccionario ordenado en orden cronológico, es decir, está
ordenado según le introduces los valores.

Si quieres el diccionario entero en orden:

[x[1] for x in sorted(a_.items(), key=lambda x: x[0])]

Dentro de sorted() se ordenan los pares de valores y el bucle externo es
para selecionar sólo los valores.


Como nota de estilo, no me gusta usar los métodos mágicos directamente.
Queda más legible con una función lambda o con el módulo operator.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Documentacion

2014-08-10 Por tema Daπid
2014-08-10 22:06 GMT+02:00 Andres Marin aym...@gmail.com:

 Hola,

 Alguna idea para documentar programas en Python?, se puede usar el
 estandar de Doxygen?


La documentación oficial (y la de muchos otros proyectos, como Numpy) está
hecha con Sphinx.

http://sphinx-doc.org/

Aparte de generarse con un comando, si tu código es público, puedes poner
tu documentación en readthedocs:

readthedocs.org

Se puede actualizar en cada commit.

Doxygen soporta Python, pero las pocas documentaciones que he visto
usándolo eran horribles, aunque sospecho que es más por la documentación en
sí que por la herramienta.


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] array

2014-08-05 Por tema Daπid
On 6 August 2014 02:19, Rolando Paz flx...@gmail.com wrote:

 bps.shape=(self.n_ants,self.n_chans)

 ValueError: total size of new array must be unchanged

Tienes un array 2D al que le quieres cambiar las dimensiones, pero el
número total de elementos antes y después no es el mismo. No tengo claro
cuál es el resultado deseado, o de dónde viene el problema, pero en la
mayoría de casos es mejor usar .reshape(N, -1) o .reshape(-1, M), donde -1
significa que Numpy calcula cuántos hacen falta en esa dimensión.

¿Este código es tuyo o de una biblioteca?
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] AIPY

2014-08-04 Por tema Daπid
On 4 August 2014 16:10, Rolando Paz flx...@gmail.com wrote:

 La gráfica que se genera está adjunta al correo y está en blanco.


Matplotlib por defecto deja los NaN en blanco. Probablemente, tu archivo
.uv tenga valores inválidos, o no lo estás leyendo correctamente.


/David
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] AIPY

2014-08-04 Por tema Daπid
2014-08-04 18:19 GMT+02:00 Rolando Paz flx...@gmail.com:

 Qué son los valores NaN en Matplotlib?


NaN es Not A Number.

https://es.wikipedia.org/wiki/NaN (Mejor explicado, en inglés:
https://en.wikipedia.org/wiki/NaN )

Versión corta: alguna operación ha ido mal. Ejemplos: 0 / np.float64(0),
np.loadtxt cuando el fichero tiene cadenas en lugar de números, o estos
están mal formateados... En tu caso, apostaría por el segundo. Abre el
archivo uv.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Lentitud cargando archivo

2014-07-30 Por tema Daπid
2014-07-29 20:41 GMT+02:00 kausdiv kaus...@gmail.com:

 La cuestión es que tarda bastante en cargar en el control el texto. (más
 de 10 segundos)

 Uso el siguiente código:
 self.dominios.LoadFile(self.m_filePicker1.GetPath())



No hay otra forma de saberlo que midiendo. Ejecuta el programa como

python -m cProfile -o resultados prog.py

Hay muchos programas para analizarlo. Mi favorito:

runsnake resultados

Y verás algo así:
http://www.vrplumber.com/programming/runsnakerun/screenshot-2.0.png, donde
puedes acotar qué función está tardando más.

/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Software para Radioastronomia

2014-06-16 Por tema Daπid
2014-06-17 0:17 GMT+02:00 Rolando Paz flx...@gmail.com:


 Me puedes explicar cuál es la función del buffer y qué significa que sea
 demasiado pequeño?


No sé, pero por tu mensaje de error:

ERR: Buffer is too small for header unpack

ERR: could not unpack header

Imagino que tendrá que ver con cuánta memoria se reserva para almacenar los
datos que lee, pero porque se llama buffer.


 A qué fichero de configuración te refieres (2048)?


Por el nombre de los ficheros, le corresponde este fichero:

https://casper.berkeley.edu/svn/trunk/projects/pocketcorrelator/poco-0.1.1/config_scripts/i8_c256.config

Ahí el tamaño del buffer se fija a 2048. Pero no sé si lo está leyendo, o
cuándo le corresponde hacerlo.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Software para Radioastronomia

2014-06-15 Por tema Daπid
On 15 June 2014 19:39, Rolando Paz flx...@gmail.com wrote:

 last_offset = p['offset']

 TypeError: 'NoneType' object has no attribute '__getitem__'

Esto debería ser un diccionario:

p = pkt.unpack(correlator.get_a_packet())

pero es None, que parece significar que no ha conseguido un buen paquete, y
por el error el buffer es demasiado pequeño. Por defecto, ese valor es de
8192, pero en el fichero de configuración parece usar 2048.

Para estar seguros, prueba a añadir un print con el valor de
self.buffer_size antes del error. Una opción es aumentarlo manualmente, a
ver si tira.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Auto-completado con ayuda

2014-06-11 Por tema Daπid
2014-06-11 19:53 GMT+02:00 Jaime Perea j...@gmx.es:

  python, C y fortran (¡en la cara no
 por favor, que quedan marcas! ... es que soy físico, comprendedlo)


Sólo mereces ser pegado si usas versiones de FORTRAN anteriores a f90. No
hay razón* para traer a este mundo nuevos engendros en F77.

___
* Excepto Windows. Pero en física Windows es usado por menos de un 2% (dato
recordado de una estadística no profesional).
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Tratamiento de datos.

2014-06-05 Por tema Daπid
for line in inputfile:
   if line.startswith('xxx'):
  break  # Ignora las líneas hasta xxx

for line in inputfile:
line = line.split(' ') # Separa por espacios
lat = (int(line[1]), float(line[2]))
long = (int(line[4]), float(line[5]))
# Haz algo con lat y long

Si tus coordendas pueden ser de cualquier lugar del mundo, tendrás que
incluir el signo en función de los valores de line[3] y line[6], y según lo
que quieras hacer, puedes convertirlo a decimal.

Si los datos son muchos, lo mejor es guardarlos en Numpy o Pandas, pero no
creo que las herramientas habituales de parseo de ficheros te sirvan, tu
formato es un tanto raro.


/David.



2014-06-05 15:42 GMT+02:00 Jose M.Allegue jmalle...@gmail.com:

 Buenas tardes.

 Estoy intentando manejar un archivo de datos pero no se como hacerlo.
 Se trata de un archivo de texto (.txt) con información en lineas.

 Parte de el es como sigue:


 Deployment Time: 26/04/2014 1:50:00
 Transit Speed (knots): 120,00
 Range (NM): 0,00
  Total Endurance: 2 hrs 0 mins
 Distance to Search Area (NM): 62,076
 Time to reach Search Area: 31 mins
  Search Speed (knots): 120,00
 On-Scene Endurance: 49 mins
 SRU Coverage Area (NM):83,893
  Track Spacing (NM): 1,00
 Pattern Type: Parallel
 Leg Length (NM): 10,9847
  Angle: 90,00
 First Turn: Right
 Commence Search Course: 0,00
  Probability of Detection (POD): 100,00 %
 Probability of Containment (POC): 100,00 %
 Probability of Success (POS): 100,00 %

  xxx Coverage Area (NM):83,893
 E  37 3.49 N,  1 13.65 W
  F  37 15.47 N,  1 13.65 W (11,9847 NM)
 G  37 15.47 N,  1 4.87 W (6,9907 NM)
 H  37 3.49 N,  1 4.87 W (11,9847 NM)

 las lineas E F G H son posiciones que tengo que tratar, de manera que
 ahora son string pero las tengo que pasar a int o float, para realizar
 ciertas operaciones con ellas Eso ya lo tengo resuelto, pero la pregunta es;
 ¿ lo trato como una lista o como un string completo ? ¿ quizás como un csv
 ?

 Como abordar este problema ?

 Gracias
 --
 jose m allegue

 jmalle...@gmail.com

 ___
 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/


Re: [Python-es] Comportamiento de python.

2014-04-08 Por tema Daπid
Por cierto, si usas eso en código y lo analizas con pylint, te avisa de que
eso es un imán para bugs. Suele ser una buena idea pasarlo de vez en
cuando, aunque no siempre haya que hacerle caso...
On Apr 8, 2014 11:41 PM, Jose Caballero jcaballero@gmail.com wrote:

 es una de esas cosas casi imposibles de encontrar en google (las key
 words son o demasiado genericas o demasiado especificas).


 El día 8 de abril de 2014, 12:08, Rock Neurotiko
 miguelglafue...@gmail.com escribió:
  Vale...
  Juro que busqué en Google, pero no lo encontré XD
  Gracias! =D
 
 
  El 8 de abril de 2014, 21:06, Jose Caballero jcaballero@gmail.com
  escribió:
 
 
 
 https://docs.python.org/3/tutorial/controlflow.html#default-argument-values
 
 
 
  El día 8 de abril de 2014, 12:02, Rock Neurotiko
  miguelglafue...@gmail.com escribió:
   Muy buenas,
  
   Hace bastante que no escribo, pero hoy me he encontrado por reddit con
   un
   articulo en el que comenta una cosa de python, y no entiendo
   perfectamente
   que es lo que ocurre, asi que os pregunto, a ver si alguien sabe
 porqué
   sucede :-)
  
   El codigo es este:
  
   def foo(x = []):
   x.append(1)
   print(x)
  
   foo()
   foo()
   foo()
   [...]
  
   Recomiendo ejecutar, ya que el resultado es soprendente (a no ser que
   entiendas perfectamente como funciona python, o ya te hayas cruzado
 con
   esto
   XD)
  
   Y ahora mi pregunta: ¿Porqué sucede esto?
   Sé que tiene algo que ver con que Python al ejecutar la funcion la
   recorre
   buscando las variables que vaya a usar, y las guarda en el scope, en
 el
   primer caso x viene del parametro (que seria []).
   Como en python todo es un objeto, la llamada a foo() se queda como
   instanciado, por lo que las siguientes ejecuciones, al buscar x la
   encuentra.
  
   No se si me explico, tampoco se si es eso, lo cierto es que estoy
   bastante
   confuso con esto XD
  
   Un saludo!
  
  
   --
   Miguel García Lafuente - Rock Neurotiko
  
   Do it, the devil is in the details.
   The quieter you are, the more you are able to hear.
   Happy Coding. Code with Passion, Decode with Patience.
   If we make consistent effort, based on proper education, we can change
   the
   world.
  
   El contenido de este e-mail es privado, no se permite la revelacion
 del
   contenido de este e-mail a gente ajena a él.
  
   ___
   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/
 
 
 
 
  --
  Miguel García Lafuente - Rock Neurotiko
 
  Do it, the devil is in the details.
  The quieter you are, the more you are able to hear.
  Happy Coding. Code with Passion, Decode with Patience.
  If we make consistent effort, based on proper education, we can change
 the
  world.
 
  El contenido de este e-mail es privado, no se permite la revelacion del
  contenido de este e-mail a gente ajena a él.
 
  ___
  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/

___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] error de memoria al generar lista de numeros aleatorios uniformes en numpy

2014-04-07 Por tema Daπid
2014-04-06 23:24 GMT+02:00 AGTUGO agt...@gmail.com:

 size_sample = 1e7
 x = np.random.uniform(0,1,size_sample)
 y = np.random.uniform(0,1,size_sample)


Los números aleatorios que generas no son importantes, son solo un medio
para un fin. Escribirlos en disco (Pytables, mmap, swap...) es un gasto
innecesario. La única razón por la que quieres hacerlo en paralelo es para
aprovecharte de la vectorización de Numpy; por tanto sólo tiene sentido
usar tamaños en los que puedas usarlo.

import numexpr as ne
import numpy as np

total_number = 1e8
size_sample = 1e6

condition_true = 0
for _ in xrange(int(np.ceil(total_number / size_sample))):
x = np.random.uniform(0, 1, size_sample)
y = np.random.uniform(0, 1, size_sample)
condition_true += ne.evaluate('sum(abs(x * x + y * y  1))')

print condition_true / total_number

Numexpr está ahí para paralelizar la expresión y optimizar el acceso a
memoria y la caché de la CPU (útil en este caso, quizá no tanto en otros
más complicados).


/David
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] IPython 2.0 requiere node.js?

2014-04-03 Por tema Daπid
En Linux no tengo pandoc ni node.js instalados, y nbconvert funciona.
Actualizando via pip de la versión antigua a la 2.0 no ha instalado nada
nuevo.


2014-04-03 11:52 GMT+02:00 Chema Cortes pych...@gmail.com:

 Hola, a todos:

 Probando el notebook de la nueva versión de IPython 2.0 veo que busca una
 instalación de node.js para que funcione nbconvert. Al no encontrarlo,
 utiliza pandoc en su lugar para renderizar markdown..

 Desconozco si se trata de alguna prueba vestigial de cambiar el kernel de
 ipython a node.js o que se haya empaquetado mal en conda (anaconda).

 ¿Sabéis si hay alguna forma de que el nbconvert de ipython 2.0 use el
 módulo markdown2 en lugar de node.js o pandoc?


  platform : win-32
 conda version : 3.3.2
python version : 2.7.5.final.0


 Saludos,
 Chema Cortés

 --
 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
 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/


Re: [Python-es] Hola a todos // Software para Radiointerferometro

2014-04-03 Por tema Daπid
A mí también me interesa. Soy físico, con algunos antecedentes en
astrofísica. Y si tú tienes antenas, o experiencia construyendo, mejor. :)


2014-04-02 23:08 GMT+02:00 Rolando Paz flx...@gmail.com:

 Es un gusto saludarlos.

 Desde hace ya algún tiempo estoy diseñando un correlador para obtener las
 señales de varias antenas y lograr realizar radioimagenes del universo.

 Ahora mismo estoy tratando de entender el software desarrollado en el 2008
 para dicho fin. Desde entonces ya no hubo actualizaciones y ya no existe
 soporte. El software son unos script escritos en python.

 Alguno de ustedes estaría interesado en ayudarme a entender y a actualizar
 los script?

  Yo sé qué es lo que deben hacer los script, pero no logro hacer que
 funcionen.
 No está demás decir que yo no sé programar :-)

 Estaré muy agradecido por su ayuda.

 Saludos

 Rolando Paz

 ___
 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/


Re: [Python-es] Divisas en aplicación

2014-04-02 Por tema Daπid
2014-04-02 12:59 GMT+02:00 kausdiv kaus...@gmail.com:

 Y lo que tengo más duro es como hacer que cada albarán, ticket, etc tome
 esa moneda. O si el cliente quiere pagar en Pesos o Dolares...


Depende completamente de cómo sea la aplicación. La idea más simple es
trabajar internamente con euros y, a la hora de meter o sacar datos,
multiplicas o divides por el factor de conversion (1 para EURO - EURO).

La idea más compleja es usar, en vez de números, objetos, donde has
sobrecargado __str__, __repr__ y demás para que haga esta conversión
automáticamente.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Ayuda instalando Django en servidor remoto

2014-03-14 Por tema Daπid
Asegúrate de usar el pip de tu virtualenv. Estará en la subcarpeta bin/pip.

[davidmh@maxwell ~]$ mkdir venv
[davidmh@maxwell ~]$ virtualenv venv/
New python executable in venv/bin/python
Installing setuptools, pip...done.
[davidmh@maxwell ~]$ cd venv/
[davidmh@maxwell venv]$ ls
bin  include  lib  lib64
[davidmh@maxwell venv]$ cd bin/
[davidmh@maxwell bin]$ ls
activate  activate.csh  activate.fish  activate_this.py  easy_install
easy_install-2.7  pip  pip2  pip2.7  python  python2  python2.7
[davidmh@maxwell bin]$ ./pip show *
---
Name: pip
Version: 1.5.4
Location: /home/davidmh/venv/lib/python2.7/site-packages
Requires:
---
Name: Python
Version: 2.7.5
Location: /usr/lib64/python2.7/lib-dynload
Requires:



2014-03-14 10:55 GMT+01:00 Alexis Cabrera Mondeja alexisc...@hotmail.com:

 Gracias David, eso suponía, yo instalé python 3.3.1 sin problemas, incluso
 por ftp puedo ver la carpeta lib/python3.3 pero ellos tenían la 2.4, cómo
 puedo usar mi instalación en vez de la de ellos??

 --
 From: davidmen...@gmail.com
 Date: Fri, 14 Mar 2014 10:44:25 +0100
 To: python-es@python.org
 Subject: Re: [Python-es] Ayuda instalando Django en servidor remoto


 On 13 March 2014 21:39, Alexis Cabrera Mondeja alexisc...@hotmail.comwrote:

 parts = 2 if version[2] == 0 else 3



 Esa es una sintaxis introducida en Python 2.5, o sea que estás instalando
 Django en Python 2.4. Lo puedes ver en el mensaje de error:


 home/alexiscm/python_virtualenv/lib/python2.4/site-packages/pip-0.8.3-py2.4.egg


 /David.

 ___ Python-es mailing list
 Python-es@python.org https://mail.python.org/mailman/listinfo/python-esFAQ:
 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/


___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] OT - Entregar fuentes Open Source

2014-01-24 Por tema Daπid
2014/1/23 Andres Vargas - zodman zod...@gmail.com

 ejecuta
 rm -rf /
 como root


Eso es una muy mala idea. Puede ser considerado destrucción de propiedad, y
desde luego pueden cargarte daños y perjuicios por el tiempo que la
aplicación esté muerta. Hay formas mucho mejores de ser BOFH [1].

Si, consultados los expertos, el único recurso que te queda es el de
pataleo y quieres ofuscar el código fuente, un simple reemplazo de
variables por cadenas aleatorias o compilarlo con Cython son suficientes
[2]. Pero cuidado, según los términos del contrato (y la legislación
aplicable), puede ser violación del contrato; y entonces tú tienes
problemas.

Hagas lo que hagas, asegúrate antes de que es legal. Aunque tengas buenas
intenciones y el sentido común de tu parte, especialmente si tu cliente
está desperado o a malas.


[1] http://mundowdg.com/blog/
[2] Una función matemática muy sencilla de una línea, se convierte en:
http://pastebin.com/BLFkN5PE
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Manera de pasar código python a visual basic

2013-11-22 Por tema Daπid
2013/11/22 monoBOT monobot.s...@gmail.com

 No existe ningún traductor de idiomas ... como mucho hay un conversor de
 py2. a py3. que además debes tu de revisar porque no es perfecto.


Sí que existen. Ahora, el código traducido no es algo que quieras leer.

Shedskin: Python puro a C (experimental, pero bastante funcional).
Cython: subconjunto de Python (con declaración de tipos opcional) a C (pero
necesita un intérprete en tiempo de ejecución).
PyPy: compilador al vuelo de RPython a código máquina.

Y, más específicos para cálculo numérico:
Numba: Python a LLVM al vuelo.
Numexpr: pequeño subconjunto de Python a su propia máquina virtual en C
(también al vuelo).

De ellos, Shedskin o Cython+Py2exe pueden ser usados para crear programas
ejecutables independientes. Otro asunto completamente distinto es usarlos
como parte de una aplicación mayor ya escrita en VB... (Cython se puede
usar para llamar Python desde C).


/David.
___
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] Almacenamiento en disco automático y transparente

2013-10-28 Por tema Daπid
Tengo un objeto Python (pongamos una cadena de texto o un array de numpy)
que puede crecer arbitrariamente, hasta, quizá, superar el límite de
memoria del SO. Quiero mantenerla en memoria mientras sea posible, pero si
llegara a crecer por encima de un cierto límite, se almacenaría en disco.
El programa, sin embargo, vería el mismo objeto, y sería capaz de leer
valores de la misma forma. ¿Es esto posible?

Con una cadena lo veo más o menos factible, sobrecargando los métodos que
la extenderían para que, si supera el límite de memoria, vuelque a archivo;
e igualmente los métodos __getitem__ fueran redirigidos a seek() y read().
Con un array, quizá me iría a EArray (extendable array) de PyTables.

¿Hay algo ya hecho? ¿Alguna idea más inteligente y eficiente?


/David.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Entrevista a GvR

2013-09-14 Por tema Daπid
2013/9/14 lasizoillo lasizoi...@gmail.com

 Lo que quiero decir con estos datos inventados es que en el desarrollo
 web suele ser muy difícil conocer qué tecnología hay detrás.


Y no sólo eso; por ejemplo, hay un montón de páginas en Wordpress, que usa
PHP, pero es un sólo grupo el que pica código. Sería como decir (salvando
las distancias) que C# es uno de los lenguajes más usados porque Windows
está escrito en él, y la mayoría de los ordenadores corren Windows. Habría
que introducir todos estos factores en la estadística.

Además, viendo el gráfico específico de Python se ve que está usado por
sitios de muy alto tráfico. Y mientras se mantenga ahí, tendrá futuro
porque habrá equipos potentes desarrollándolo.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Imagenes dañadas al descargar con urllib2

2013-08-27 Por tema Daπid
2013/8/27 WolveLopez wolvelo...@gmail.com

 f = open(nombre_del_archivo, w)


Prueba a abrirlo en modo binario, wb. Este modo es específico de Windows,
por eso Linux te funciona bien. El intérprete de Python en Linux
simplemente ignorará la b, por lo que puedes usar el mismo código para
Windows y Linux.

En el tutorial oficial:

http://docs.python.org/2/tutorial/inputoutput.html  --- 7.2


David.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Entrevista a GvR

2013-08-27 Por tema Daπid
2013/8/27 Chema Cortes pych...@gmail.com

 python debe
 evolucionar más allá de CPython si no quiere quedarse fuera de la
 programación de móviles y para la nube.


Me pregunto si es realmente necesario. En el tiempo que llevaría
desarrollar y madurar un compilador adecuado para móviles, la tecnología de
hardware habrá avanzado al punto en el que te puedas permitir tener un
intérprete.

Dicho lo cual, hay bastantes cosas montadas sobre el estándar CPython, como
Shedskin, que evitan o reducen la necesidad de un intérprete; pero son
cosas experimentales de las que (todavía) quizá no te puedes fiar lo
suficiente como para usarlas en producción comercial.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Instalación de Eric-ide 5

2013-08-15 Por tema Daπid
2013/8/15 Luis este...@princesa.pri.sld.cu:
 Qué me está faltando?

Probablemente, instalar esos módulos en Python3. Cada versión de
Python tiene sus bibliotecas, y son independientes unas de otras
(aunque la biblioteca en sí puede ser la misma).

En cuanto a QT4/PyQT4, el primero es el framework en sí, código en
C++, mientras que PyQT4 es la biblioteca para enlazar desde Python.


David.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] como saber cuanto tarda en ejecutarse una funcion?

2013-08-14 Por tema Daπid
time.time() te da el tiempo en segundos, con precisión de
microsegundos, igual que micros de arduino.

Si quieres hacerlo más fino, puedes usar timeit (método mágico %timeit
de ipython), que hace una medida más precisa (útil, por ejemplo, si
estás desarrollando y quieres ver si una optimización es efectiva). Si
tu función llama a funciones dentro, lo mejor es hacer profiling
para ver qué partes están llevando tiempo. Para esto te recomiendo
runsnakerun. Si no tienes funciones internas, usa line_profiler, que
medirá cada línea.

Hace tiempo colaboré con Pybonacci en una lista de formas de acelerar
Python. Si necesitas mejorar el rendimiento de tu función quizá alguna
de estas te sea útil:
http://pybonacci.wordpress.com/2012/05/01/python-es-lento/

Algunos consejos más concretos y prácticos, por Kiko:
http://pybonacci.wordpress.com/2012/06/24/revisitando-python-es-lento-pequenos-trucos/


David.

2013/8/14 xiao xiong mao panda rojo ailurus.fulg...@hotmail.com:
 trabajo en un programa que lee el puerto serial, toma unos 12 bytes, realiza
 una larga función y lee el serial otra ves, en un bucle infinito.
 ya que recibe nuevos datos vía serial cada 10 mili-segundos mi función debe
 terminar antes.
 creo que la función esta tardando mucho mas en ejecutarse.

 seguramente alguno ha hecho esto antes.
 alguna forma sencilla de saber cuanto le toma a la función completarse?
 con arduino uso el método micros() que cuenta los micro-segundos que lleva
 encendido el microcontrolador

 unsigned long tt = micros();
 aLongProcess();
 Serial.println( micros()-tt );

 no hay problema si consigo los resultados en micro o mili segundos
 gracias


 ___
 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/


Re: [Python-es] Fwd: Ajuste de valores en el eje x matplotlib

2013-08-12 Por tema Daπid
2013/8/9 Acústico Cáustico caustico.acust...@gmail.com:
 Como se puede observar estoy tratando de graficar el eje x en segundos y no
 en nro. de muestras, alguno conoce la forma gen'erica de hacerlo, es decir,
 quiero que este c'odigo funcione para diferentes audios, por eso no lo hago
 con los xticks de este modo:

plt.plot(tiempos, canal_l)

donde tiempos serían los valores de tiempo para cada muestra.
np.linspace(0, segundos, len(canal_l))
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Eficiencia de las listas

2013-08-07 Por tema Daπid
2013/8/6 Chema Cortes pych...@gmail.com:
 Interesante caso usando numpy y numba. Pero el problema que veo es que
 la función flipper no debería tener fijados los parámetros de corte,
 lo que supongo que hará perder bastante eficacia al JIT de numba.

El hecho de que Numba sea capaz de optimizarlo (significativamente,
además) significa que un compilador puede mejorarlo, y por tanto,
cython debería poder hacer algo. Mi intento, sin embargo, lanzándole
todo lo que sé (que tampoco es mucho) no ha servido de nada,
exactamente el mismo tiempo:

import numpy as np
cimport numpy as np

cimport cython

DTYPE = np.float64
ctypedef np.float64_t DTYPE_t

@cython.boundscheck(False)
@cython.wraparound(False)
def flipper(np.ndarray[DTYPE_t, ndim=1] K not None, int i, int j):
K[i+1:j+1]=K[j:i:-1]
return K


Agradezco comentarios y sugerencias.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Eficiencia de las listas

2013-08-07 Por tema Daπid
2013/8/7 Chema Cortes pych...@gmail.com:
 Pytable+hdf5 lo tenía más asociado con datos masivos jerarquizados.
 Igual estoy equivocado.

PyTables son, esencialmente, tablas de datos, con  columnas
homogéneas. Ofrece una interfaz tipo ndarray (incluyendo slices), pero
que para muchas operaciones optimiza el acceso a disco. También tiene
capacidades de búsqueda in kernel (las filas en las que la tercera
columna sea menor que la raíz de dos), que se hacen a velocidad de C.
Es práctico para manejar volúmenes de datos muy grandes que no quepan
en memoria.

 Numexpr (y/o numba) también los tengo pendientes. CArray no lo
 conocía, aunque parece relacionado con los anteriores. ¿Podría numexpr
 mejorar los resultados de numba que ha puesto Daπid?

CArray significa chunked array. Es un ndarray que no ocupa
necesariamente un trozo de memoria contiguo. Cuando se hacen insertan
o eliminan elementos en algún punto del medio de un ndarray, todo el
resto de la memoria hasta el final ha de desplazarse; un carray, al
estar divididido, sólo necesita mover un bloque pequeño. Creo que no
es algo que te interese ahora.

No estoy seguro de esto, pero por lo que he visto, carray es útil como
estructura de bajo nivel sobre la que montar librerías avanzadas de
manejo de datos, no sé si hay mucho uso en producción directamente.

Por su lado, lo único que Numexpr hace es operaciones elemento a
elemento (o la suma/producto total) sobre arrays optimizando el uso de
la caché de la CPU y paralelizando de forma transparente. En el
clásico ejemplo a + b * c, siendo a, b y c ndarrays, Python puro
realiza primero b * c, lo guarda en una variable temporal que luego
suma a a. Numexpr hace las operaciones elemento a elemento
directamente (a[0] + b[0] * c[0]), saltándose la variable temporal y
aplicando todas las optimizaciones mencionadas. En la documentación no
mencionan nada de revertir un array, y, aunque existiera, dudo que
fuera útil en este caso.

Numba es un optimizador genérico* con mucha maquinaria pesada. La idea
es que sea prácticamente automático, y pueda inferir tipos, compilar,
paralelizar, procesar datos a través de la GPU... de forma
transparente o casi transparente (siempre vienen bien ayudas). Su
mayor inconveniente es que está todavía en desarrollo temprano
(heisenbugs incluidos); y que requiere compilar LLVM.



* Aunque a día de hoy sólo es verdaderamente efectivo sobre ndarrays,
y la mayor parte del desarrollo va en esa dirección.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Eficiencia de las listas

2013-08-06 Por tema Daπid
También depende de cuánto quieras invertir.


In [4]: l=np.random.random(3*10**6); L=list(l)
In [8]: i = int(10**5.8)
In [11]: j = 3*10**6-10
In [26]: %timeit l[i+1:j+1]=l[j:i:-1]
10 loops, best of 3: 23.4 ms per loop

In [27]: %timeit L[i+1:j+1]=L[j:i:-1]
100 loops, best of 3: 427 ns per loop

In this case, the list clearly beats NumPy, pero:


def flipper(K):
   ...: i=10**4
   ...: j=10**5
   ...: K[i+1:j+1]=K[j:i:-1]
   ...: return K

In [6]: %timeit flipper(l) # NumPy array
1000 loops, best of 3: 311 us per loop
In [7]: %timeit flipper(L)   # Lista
100 loops, best of 3: 5.51 ms per loop

y, si quieres exprimirlo al máximo:

nflipper=numba.autojit(flipper)

In [10]: %timeit nflipper(l)
1 loops, best of 3: 105 us per loop

In [11]: %timeit nflipper(L)
1 loops, best of 3: 5.52 ms per loop# La lista no se optimiza

usando numba0.10.


David.

2013/8/6 Antonio Beamud Montero antonio.bea...@gmail.com:
 El 05/08/13 21:54, Chema Cortes escribió:

 Últimamente, estoy realizando estudios sobre la eficiencia de
 distintos códigos python. Mirando qué tipo de colección podía ser más
 eficiente según qué tareas, me encuentro con el siguiente párrafo en
 la documentación de [deque][1]:

 Deques support thread-safe, memory efficient appends and pops from
 either side of the deque with approximately the same O(1) performance
 in either direction.

 Though list objects support similar operations, they are optimized for
 fast fixed-length operations and incur O(n) memory movement costs for
 pop(0) and insert(0, v) operations which change both the size and
 position of the underlying data representation.

 He comprobado que, efectivamente, el costo de insertar elementos al
 principio de una lista es mucho mayor que añadir elementos al final de
 la lista (x1).

 En estos momentos , necesito trabajar con listas de números muy largas
 ( 10e6 elementos) para trocear en dos pedazos, invertir uno de ellos
 y volverlos a empalmar (método 2-opt). Una forma de expresarlo:

 L[i+1:j+1] = L[j:i:-1]   con i+1j

 que equivale a:

 L[:i] + L[j:i:-1] + L[j+1:]

 Esta última expresión, aunque más clara, es poco eficiente al tener
 que crear una nueva lista partiendo de tres sublistas intermedias.

 Los elementos no cambian de valor y tampoco cambia el tamaño de la
 lista. Parece que la lista es la estructura más eficiente para esta
 tarea (por lo que cuenta la documentación) siempre que no se modifique
 en tamaño. Pero me pregunto si hay algún modo de hacer este manejo más
 eficiente, tal vez usando alguna otra estructura, en python o numpy,
 que mejore estas tareas de corte y empalme. Intuyo que con arrays se
 reducen las necesidades de memoria, pero en estos momentos, la memoria
 es lo que menos me preocupa. Busco un método genérico que pueda valer
 para cualquier otro tipo de datos (eg: lista de vectores).



 Yo me decanté por usar numpy para resolver este tipo de problemas, aunque
 mis listas eran un orden de magnitud más pequeñas, después de hacer varias
 pruebas, el uso de las listas para operaciones simples, es tanto o más
 eficiente usando listas de python que crear arrays en numpy (bueno
 dependiendo de la operación), pero yo necesitaba métodos como 'diff',
 'where', etc.. que si que marcaban diferencias respecto a mis anteriores
 implementaciones.

 Estaré muy atento a las conclusiones que llegues :-)

 Un saludo.

 ___
 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/


Re: [Python-es] Eficiencia de las listas

2013-08-06 Por tema Daπid
2013/8/6 Chema Cortes pych...@gmail.com:
 Interesante caso usando numpy y numba. Pero el problema que veo es que
 la función flipper no debería tener fijados los parámetros de corte,
 lo que supongo que hará perder bastante eficacia al JIT de numba.

En absoluto. Pasando i y j como argumentos a la función, se tienen los
mismos tiempos. Numba es más eficiente cuantos más números se estén
cambiando:


In [17]: %timeit flipper(l,10**2, 10**3)
10 loops, best of 3: 6.14 us per loop

In [18]: %timeit nflipper(l,10**2, 10**3)
10 loops, best of 3: 5.8 us per loop

In [19]: %timeit flipper(l,10**3, 10**5)
1000 loops, best of 3: 351 us per loop

In [20]: %timeit nflipper(l,10**3, 10**5)
1 loops, best of 3: 119 us per loop


He vuelto a medir los tiempos de NumPy sin función y ahora sí obtengo
resultados razonables:

In [26]: %timeit l[i+1:j+1]=l[j:i:-1]
1000 loops, best of 3: 351 us per loop

(i y j son 10**3, 5 respectivamente).


Por completitud, usando la lista L=list(l)

In [29]: %timeit L[i+1:j+1]=L[j:i:-1]
100 loops, best of 3: 6.77 ms per loop


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]
1 loops, best of 3: 101 us per loop


Pero claro, no estamos teniendo en cuenta la copia de l2 (15 ms)
(quizá útil si se va a repetir el mismo proceso sobre muchas secciones
no solapantes del array).
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Esqueleto .pyd

2013-06-22 Por tema Daπid
2013/6/23 Mario Encalada marioencal...@gmail.com:
 [.pyc] Es el mismo programa, pero optimizado

Pero poco. En realidad, lo único que ganas es que se lea más rápido.
El tiempo de ejecución será el mismo para la mayor parte del programa.
Puedes ganar un poquito más llamando a Python con -O, que simplemente
ignorará los assert.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Llega un novato

2013-05-03 Por tema Daπid
Si sabes inglés (y no hace falta mucho nivel), una buena opción es el
tutorial oficial:

http://docs.python.org/2/tutorial/
http://docs.python.org/3/tutorial/

Es conciso, completo y cubre bastante bien lo básico, sobre todo para
alguien que empieza a programar de cero (explicando en detalle los if,
for, while...). A partir de ahí, lo fundamental es que tú te busques
tus propios ejercicios y resuelvas problemas, sin demérito de otros
ejercicios más formales como los que te han sugerido.

En cuanto al sistema operativo, lo mejor de Python es que es
multiplataforma: el mismo programa correrá igual en cualquier sistema
operativo*, por lo que puedes usar el que más te guste. En mi
experiencia, que es Python para aplicaciones científicas, es más fácil
combinar Python con C o FORTRAN en Linux que en Windows, pero por el
contrario, cuando una biblioteca incluye un instalador para Windows
significa -casi siempre- que funcionará a la primera. En el caso web,
no te puedo decir nada, lo más avanzado que puedo hacer es rst2html,
pero es mi impresión que casi todo el mundo desarrolla en Linux.

Ya por último, te recomendaría que, en cuanto cogieras algo de soltura
con el lenguaje, aprendas unittest o nose para TDD y cosas como
idioms y las estructuras de datos estándar (deque, la lista
bicéfala...).

Buena suerte aprendiendo.



David.


__
* Salvo algunas cosas avanzadas.

2013/5/3 Harenson Henao haren...@gmail.com:
 Un pequeño aporte al comentario anterior, en enlace correcto es
 http://pythonmonk.com/ (sin el subdominio www).

 Carlos Agulló Calvo, gracias por el enlace, no lo conocía

 Saludos.

 El 3 de mayo de 2013 10:16, Carlos Agulló Calvo cm.agu...@gmail.com
 escribió:

 Además de codecademy existe pythonmonk, que es parecida.


 El 3 de mayo de 2013 15:45, arele ar...@esdebian.org escribió:

 Yo,  que no es que sea novatosino que lo soy mucho más,  estoy siguiendo
 lo de Codeacademy y me esta viniendo fenomenal para aprender desde cero (o
 desde menos 4 en mi caso. .. )
 Un saludo

 El 03/05/2013 15:25, Diego Caraballo dcaraba...@amsj.com.uy escribió:

 Te recomiendo esta web: http://www.codecademy.com/#!/exercises/0 , hay
 un curso online de python en español que a mi me ha ayudado mucho.
 Espero te sirva
 Saludos







 El 2013-05-02 19:58, Leandro Minatel escribió:

 Estimados, luego de trabajar mas de 20 años con una herramienta
 denominada GeneXus me dieron ganas de volver a la programacion
 tradicional y he elegido Python para tal aventura. La cuestion que me
 lleva a escribir este post es muy simple: ¿por donde empiezo? Quiero
 decir, que libro/sitio me recomiendan comenzar a leer/recorrer? que
 version de Python debo utilizar? Debo tener algo en cuenta para
 desarrollar bajo Linux o me recomiendan Windows o Mac? Algun consejo
 que me quieran dar?

 Mi idea es comenzar a entender este lenguaje y luego ir por el lado
 de desarrollos de aplicaciones Web, principalmente WebServices.

 Bueno, gracias de antemano.

 Slds

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


 --
 Diego Caraballo
 Cel: 091425426
 ___
 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/



 ___
 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/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Principiante en Python

2013-04-30 Por tema Daπid
Sí, ese mismo. Tienes que instalar pydev desde dentro del propio eclipse,
como plugin, pero es bastante fácil, casi automático.

Si has programado antes, es una buena opción, por lo que dices, ya has
programado antes, ¿verdad? Para un completo principiante tiene demasiada
información, para mi gusto, y puede sobrecargar.

David.
On Apr 30, 2013 2:16 PM, Juan Perles perl...@gmail.com wrote:

 Muchas gracias, las he dado a todos en general, pero a tí quiero dártelas
 en particular.

 He intentado bajarme Eclipse pero de todos los que hay he optado por el
 Classic.
 ¿Es el correcto?.


 Enviado desde mi iPad

 El 30/04/2013, a las 10:58, Jose Luis Nuñez jnu...@inetsec.es escribió:

  Eclipse + PyDev
 
 
   Mensaje original 
  De: Juan Perles perl...@gmail.com
  Fecha:
  Para: Python-es@python.org
  Asunto: [Python-es] Principiante en Python
 
 
  Buenos días, estoy empezando con Python y he bajado e instalado el
 Python 3.3.
 
  Ahora querría tener un entorno GUI y con toda mi inexperiencia de los
 que he visto, me he inclinado por el PythonCard, pero no soy capaz de
 instalarlo. ¿Quizás porque tengo la versión 3.3 y tendría que haber
 instalado una más antigua?
 
  Os doy las gracias por anticipado y espero que me digáis si me he
 equivocado en alguna de mis opciones.
 
  Si me proponéis alguna que no sea el PythonCard, también será bienvenida
 porque como os he dicho antes no tengo ni idea.
 
  Gracias de nuevo.
  ___
  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/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Stack Overflow en español: debate

2013-04-09 Por tema Daπid
2013/4/9 Juan Luis Cano juanlu...@gmail.com

 Tal y como yo lo veo, la ventaja fundamental es que el formato Stack
 Overflow está pensado no solo para mejorar el posicionamiento en
 buscadores, sino para mejorar también la eficiencia de la búsqueda de
 información. La respuesta buena aparece arriba del todo, justo bajo la
 pregunta; mucho mejor que buscar en una cadena de 30 hilos. Con lo cual
 secundo el comentario de mauricio: «seguramente sea la
 misma información pero mejor organizada sin lugar a dudas».


Aquí hay dos debates que se están mezclando de mala manera:

- Formato: ¿SO o lista de correo? Forma más eficiente de organizar la
información.
- Idioma: ¿añadir español a SO? Duplicación / traducción de la información
frente a condensar todo en inglés.


En cuanto al formato, quiero hacer un comentario. La organización de cara a
búsquedas de SO es mucho mejor, sin duda, pero también es cierto que
participar es más difícil. La lista me manda correos, y yo automáticamente
puedo decidir si me interesan, los sé responder, habland de Django así que
los decido ignorar activamente... mientras que algo tipo SO requiere entrar
de forma activa, revisar los temas, etc. Sé que uno se puede suscribir,
pero ya no es lo mismo.

Por cierto, la discusión sobre el idioma me ha recordado este problema que
tuvo un amigo:
http://pmisson.blogspot.com.es/2012/05/batallas-de-compilacion.html


David.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Stack Overflow en español: debate

2013-04-09 Por tema Daπid
2013/4/9 Eduard Diaz eventgra...@gmail.com

 En cuanto a documentación de python, tengo, no toda pero si bastante
 documentación en pdf, epub, markdown, html y otros formatos y muchas
 veces veo una pagina html la descargo y la formateo en markdown y me
 genero un epub con pandoc


Eso no es aplicable a este caso. Convertir entre esos formatos es poco más
esfuerzo que escribir una línea de comandos, la documentación se escribió
una vez, y de ahí se puede reproducir. En este caso, la redundancia supone
responder de nuevo a los mismos problemas; construir las respuestas desde
cero. El esfuerzo necesario ahí es notable.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] El infinito se me queda corto

2013-03-20 Por tema Daπid
En Numpy:

In [1]: np.tan(np.pi/2)
Out[1]: 16331239353195370.0

In [2]: np.log10(np.tan(np.pi/2))
Out[2]: 16.213019143942429

Exactamente el mismo resultado.



2013/3/20 Chema Cortes pych...@gmail.com:
 Supongo que habrá una explicación. Si realizo el siguiente cálculo:

 In [13]: import math

 In [14]: math.tan(math.pi/2)
 Out[14]: 1.633123935319537e+16

 Aunque no esperaba que me diese la solución correcta de
 float(+inf)/float(-inf), me resulta muy corto para el tamaño
 máximo que podría tener un double:

 In [16]: sys.float_info.max
 Out[16]: 1.7976931348623157e+308

 He comprobado que pasa lo mismo con scala e, incluso, en el buscador
 de google (tal vez sea que google usa también python):

 https://www.google.com/search?q=tan(pi%2F2)

 ¿Existe alguna explicación?¿Algún modo de ajustar más el resultado a
 infinito (sin ser la solución trivial de comprobar los parámetros de
 entrada)?



 --
 Hyperreals *R: http://ch3m4.org/blog
 Quarks, bits y otras criaturas infinitesimales
 ___
 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/


Re: [Python-es] Copiar archivos

2013-03-20 Por tema Daπid
2013/3/20 Manuel A. Estevez Fernandez stvz...@gmail.com:
 Intente hacerlo con shutil.copy2 pero como debo tener el nombre exacto no me
 funciona, o tal vez lo estoy usando de forma incorrecta.

Si el nombre es el mismo, salvo unos caracteres adicionales al final
(y sólo hay un archivo que cumpla esto):


name_rel = 'C2'
fname = glob.glob(name_rel + '*')[0]
shutil.copy2(fname .)

glob.glob es más o menos el equivalente pythónico al commando:

ls C2*
___
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] Implementación de cmath.sqrt

2013-03-14 Por tema Daπid
Hola:

Estaba echándole un vistazo superficial a la biblioteca cmath de
Python [1] cuando encontré esto:

static Py_complex
667 c_sqrt(Py_complex z)
668 {
[...]   
696 Py_complex r;
[...]   
702 if (z.real == 0.  z.imag == 0.) {
703 r.real = 0.;
704 r.imag = z.imag;
705 return r;
706 }
...

El códig en primer lugar comprueba si el número es 0, y si no continúa
calculando la raíz cuadrada para números generales. Por supuesto, la
raíz cuadrada de 0+0j es 0+0j, pero lo calcula de forma curiosa: la
parte real la pone como 0 y la imaginaria como la imaginaria del
número original (que es 0). ¿Por qué es esto?

Se me ocurrió que podría ser para preservar tipos, pero

 cmath.sqrt(0)
0j

devuelve un complejo, no un real.



[1] 
http://svn.python.org/view/python/trunk/Modules/cmathmodule.c?revision=76978view=markup
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Implementación de cmath.sqrt

2013-03-14 Por tema Daπid
2013/3/14 Chema Cortes pych...@gmail.com:
 Sencillamente, está preservando el signo de la parte imaginaria tal y
 como se define para las raices cuadradas con complejos.

¡Ajá! Muchas gracias, eso lo explica todo. En la implementación
anterior se preservaba también el signo de la parte real, que no tiene
mucho sentido y caiga en la discontinuidad de la hoja de Riemann.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Duda sobre matrizes en python y diccionarios con listas

2013-03-13 Por tema Daπid
2013/3/13 Rafael Gomes rgg...@hotmail.com

 La otra duda es sobre como puedo hacer matrizes en python? Yo utilize este
 metodo pero no se si es el mas correcto

 a=0
 a=[a]*tamanho
 matriz_adj=[a]*tamanho
 print matriz_adj

 La matriz es para tratar de hacer la matriz adjacente de mi red de casa.


Si quieres tratar matrices, lo mejor es NumPy.

import numpy as np
np.zeros((2,3))  # matriz de ceros dimensiones 2x3


Sin embargo, quizá te interese echarle un vistazo a NetworX, una biblioteca
para trabajar con redes. Por debajo lo que tiene son diccionarios de
diccionarios, por lo que, aún siendo python puro, es bastante eficiente (yo
manejo redes de 10⁵ - 10⁶ nodos sin problemas). Por supuesto, también
exporta a matrices.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Charlas y tutoriales para PyData 2013 disponibles

2013-02-06 Por tema Daπid
2013/2/5 Kiko kikocorre...@gmail.com:

 Jajaja lo siento Francesc, me ha hecho gracia la parte de «a ver si os
 animáis». ¡Mi bolsillo no me permite todavía volar 6000 kilómetros, asistir
 a la conferencia y dormir bajo techo allí! :P

 Tienen una pinta extraordinaria, me tendré que conformar con los vídeos :)
 +1.

La solución es fácil, en dos pasos:

1) Hacernos asquerosamente ricos.
2) Ir al PyData.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Clase de Clases

2013-01-21 Por tema Daπid
Si quieres que cada instancia llame a instancias de las subclases
diferentes, deberías llamarlas en el  init. Pero no estoy seguro de haber
entendido tu problema, así que a lo mejor no es esto lo que estás buscando.
On Jan 21, 2013 1:18 PM, Oswaldo lis...@soft-com.es wrote:

 El 21/01/2013 7:58, Alvaro Manrique escribió:


 Estoy probando esto, pero de igual manera no logro que finalice la
 instancia de la clase Miembro:


 Cuando haces:

 class Hija(Base):
   Miembro1 = Miembro()

 Miembro1 es una propiedad de la clase, no de la instancia. Se crea una
 instancia Miembro() con la definición de la clase que compartirán todas las
 instancias de la clase Hija. Por eso no se destruye al eliminar las
 instancias de la clase Hija.

 Si en tu ejemplo creas varias instancias de Hija verás que comparten la
 misma instancia de Miembro:

  c = Hija()
  print id(c.Miembro1)
 31214288
  c1 = Hija()
  print id(c1.Miembro1)
 31214288


 A mi parecer eso no está ni bien ni mal, es simplemente como lo quieras
 hacer. Si los datos de miembro van a ser de solo lectura la implementacion
 de esta forma puede ser correcta, pero si las instancias de Hija van a
 modificar valores de Miembro vas camino del desastre ;)

 Un saludo,

 --
 Oswaldo
 __**_
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/**mailman/listinfo/python-eshttp://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.**com/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/


Re: [Python-es] Tratar datos txt entre filas

2013-01-17 Por tema Daπid
Matplotlib puede pintar listas de python puro o arrays de numpy, por lo que
no es un problema cómo decidas recoger esos datos.
On Jan 17, 2013 5:53 PM, Carlos Agulló Calvo cm.agu...@gmail.com wrote:

 Muchas gracias a todos.

 Como no sé utilizar ninguno de los módulos que habéis dicho los trastearé
 un poco a ver cual se adapta mejor a lo que necesito (o yo a él).

 ¿Si utilizara el modulo de CSV o lo hiciera sin módulo podría utilizar
 después el Matplotlib?

 Con respecto al código de Jacobo, aún no me he podido poner con ello, pero
 en cuanto pueda lo miraré con detalle.

 Un saludo a todos.

  El 17 de enero de 2013 12:20, Jose Luis Dallapiccola 
 jlda...@gmail.comescribió:

 Hola Carlos, muy buen día.

 Otra recomendación sería útilizar el módulo csv para la lectura y
 escritura de los datos, ya que veo que tienen un formato CSV.

 Saludos y éxitos!


 2013/1/17 Jacobo Tarragón Cros jacobo.tarra...@gmail.com

 Hola Carlos,

 yo definiría los filtros como funciones y los aplicaría uno por uno a
 los datos en el bucle de lectura.

 Si necesitas comparar filas arbitrarias, lo más sencillo es guardar los
 datos leídos en memoria —pero ten en cuenta que esto puede ser un problema
 si tu conjunto de datos es demasiado grande. Para los casos que citas, sólo
 sería necesario guardarse la fila nueva y la anterior.

 def cero_y_cien(nuevos, datos):
 return not (nuevos[3] == '0' and nuevos[4] == '100')

 def valor_mayor(nuevos, datos):
 # compara nuevos con la fila mas reciente de datos
 return int(nuevos[4]) = int(datos[-1][4])

 datos = []
 filtros = (cero_y_cien, valor_mayor)
 for linea in leer.readlines():
 nuevos = linea.strip().split(';')
 datos.append(nuevos)

 for fn in filtros:
 valido = fn(nuevos, datos)

 Si quieres comparar los datos independientemente —por columnas— lo más
 conveniente es convertir cada fila en una lista. ¿Qué quieres decir con que
 te duplica el peso de los archivos?

 Un método un poco más sofisticado podría ser lanzar excepciones cuando
 un filtro falla, y recogerlas en el bucle con un try/except:

 def cero_y_cien(nuevos, datos):
 if (nuevos[3] == 0 and nuevos[4] == 100):
 raise ValueError('las columnas 3 y 4 son 0 y 100
 respectivamente')

 Personalmente no usaría numpy para este tratamiento de datos.

 No he probado el código pero espero que te sirva de orientación.

 Saludos,
 Jacobo.

 El 17 de enero de 2013 11:10, Carlos Agulló Calvo 
 cm.agu...@gmail.comescribió:

 Muchas gracias por la respuesta (y por la velocidad en ella)

 Aprovecha el for para aplicar tus filtros directamente ahí a medida que
 vas leyendo. Mete un par de ifs para tratar si es el principio o fin del
 fichero para comparar con el dato anterior (en fecha).

 Sí, pensaba aprovechar el for para poner los filtros. Lo de los ifs es
 buena idea para saber si es primera o última fila, pero lo que no se es
 comparar entre 2 filas cualquiera (p.ej la fila 11 y la 12).
 Por cierto, ¿es necesario pasar a listas las filas? es que se me
 duplica el peso de los archivos que ya de por si son bastante pesados.


 ¿Te has planteado usar numpy para esto o no es posible y debes usar
 python puro? Numpy te podría facilitar mucho las cosas y librarte de algún
 for que te ralentice el programa.

 No he usado nunca numpy, es más, ni siquiera sabía de su existencia.
 Soy bastante novato y el tratamiento de los datos es para un tema de la
 universidad, por lo que puedo usar lo que quiera, sólo que pensé que python
 era lo mejor y por eso me puse a aprenderlo por libre. Me voy a bajar numpy
 y matplotlib porque luego tendré que ponerme a hacer gráficos con los
 resultados.

 Un saludo

 El 17 de enero de 2013 10:56, Kiko kikocorre...@gmail.com escribió:



 El 17 de enero de 2013 10:46, Carlos Agulló Calvo cm.agu...@gmail.com
  escribió:

 hola

 Hace ya tiempo pregunté varias dudas sobre el tratamiento de datos
 que están en un .txt desde entonces, he conseguido varios progresos, pero
 ahora me he quedado estancado en un punto del que no se salir.

 Mi duda consiste en lo siguiente:

 tengo los datos de la siguiente manera:

 0303201;1/4/2009
 0:01:00;2;0;0;0;0;117;44;163;2;0;0;0;-127;2;-127;-127;-127;-127;0
 0303201;1/4/2009
 0:02:00;2;1;0;0;0;104;92;255;1;0;1;1;-127;1;-127;-127;-127;-127;0
 (Es un extracto)

 y querría poder compararlos entre las filas para aplicar una serie de
 filtros y en función de si cumplen o no los filtros que vayan a archivos
 separados.

 He pensado que debería hacer que cada fila fuera una lista y por eso
 he hecho este programa:

 leer=open(datos.txt,r)
 lista=open(datos_lista.txt,a)
 validos=open(est_0303201_VAL.txt,a)
 no_validos=open(est_0303201_ERR.txt,a)

 for i in leer.readlines():  #con esto lee cada línea
 datos=i.strip().split(;)  #guarda cada linea como una lista
 lista.write(str(datos)+\n)  #escribe en VALIDOS
 (datos_lista.txt) las lineas como listas [,]



 leer.close()
 validos.close()

 que me crea 2 archivos vacíos y 

Re: [Python-es] Python y Julia para LLVM

2013-01-16 Por tema Daπid
Hay una biblioteca para Python, pyllvm. Sobre eso, la gente de continuum
han montado un compilador automático, compatible con numpy: numba.
Simplemente añadiendo un decorador a la función la optimiza al vuelo. El
proyecto es muy nuevo, pero desde hace unas semanas ya está listo para
producción.

En pybonaci Juanlu hizo una reseña con algunos resultados impresionantes de
la primera versión:
pybonacci.wordpress.com/2012/08/21/probando-numba-compilador-para-python-basado-en-llvm/

Travis ha dado alguna charla más sobre numba desde la que hay allí colgada,
si buscas un poco puedes encontrar unas cuantas interesantes (aunque las
que he visto aportan poco más que esa). Lo único que le falta al proyecto
es una buena documentación.
On Jan 16, 2013 10:39 AM, Chema Cortes pych...@gmail.com wrote:

 Hasta hoy, desconocía totalmente la infraestructura LLVM[1] como
 soporte en la creación de compiladores (estáticos o dinámicos). Estoy
 viendo que con él se están implementando bastantes lenguajes de
 programación y librerías (sobre todo de cálculo).

 Me preguntaba si álguien conoce algo LLVM como para comentar sus
 virtudes en la implementación de lenguajes como Julia[2] (similar a
 python, orientado al cálculo numérico) o como target de PyPy.
 Entiendo que no es una máquina virtual, a pesar de lo que pueda
 parecer su acrónimo, pero me interesaría saber en particular qué tal
 se lleva esta infraestructura con el multiproceso y la escalabilidad,
 como en el caso de la computación paralela distribuída que posee
 Julia.


 [1]: http://llvm.org/ The LLVM Compiler Infrastructure
 [2]: http://julialang.org/ Julia Language





 --
 Hyperreals *R: http://ch3m4.org/blog
 Quarks, bits y otras criaturas infinitesimales
 ___
 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/


Re: [Python-es] Pythoniano y c niano

2012-12-26 Por tema Daπid
2012/12/26 kausdiv kaus...@gmail.com:
 def main():
 [...]

 main()


Esto sólo es útil si lo haces dentro de un

if __name__ == '__main__':
main()

Esto significa que si el archivo se está ejecutando por sí mismo (no
llamado desde otro módulo), ejecuta main(). En realidad, esto es útil
para hacer pruebas.

Si no necesitas usar esto, simplemente escribe el código:

def isprime():
   blahblah

ok = 1
while ok...

Por otro lado, los valores booleanos son True y False, por lo que lo
más correcto sería:

ok = True
while ok:

o, si lo quieres más claro,

while ok == True:

pero es que, en este caso, te lo puedes ahorrar.

while True:

y donde pone ok = 0, lo cambias por un break para romper el ciclo. Lo
mismo se aplica a la función.

Para la entrada de valores, puedes simplificarla haciendo:

n1=int(raw_input(Valor inicial ))

El problema es que al usuario se le puede escapar algo que no debía al
meter los datos (el dedo morcilla mete una r donde debería ir un 5), y
el programa cascará porque no sabe convertir '3r7' a un entero. Si
quieres protegerte de eso, deberías usar un try - except (parecido al
catch de C).

También, la forma habitual del operador es distitinto a es !=, no .
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Pythoniano y c niano

2012-12-26 Por tema Daπid
Por otro lado, el algoritmo se puede mejorar un poco. Hay métodos muy
optimizados para calcular números primos, pero sin irnos a matemáticas
superiores, podemos mejorar tu proceso. Un número es primo si y sólo
si no es divisible exactamente por todos los números menores que él
(sin contar el 1), y por tanto  si no es divisible exactamente por
todos los primos menores que él (sin contar el 1). Por tanto, basta
con que comprobemos sólo los números primos (que ya has calculado).
Además, sabemos que los números pares no son primos, por lo que
también nos los podemos saltar.

Calculando todos los primos desde 2 hasta n tenemos (spoiler):

http://pastebin.com/fMRH5xKK

Este programa tarda 0.3 s en calcular los primos hasta 15 000, y 13 s
en encontrar los 13 843 primos menores que 150 000. Tu versión tarda
unos 3 segundos para el primer caso.

El proceso se puede encapsular más. Podemos echar mano de la
programación funcional y hacer que isprime devuelva por defecto True,
salvo cuando vea que el número es compuesto, en cuyo caso devolverá
False.

http://pastebin.com/gnFrcpYC

Con esto, hemos reducido el tiempo de cálculo a la mitad.

He probado a considerar sólo los primos menores que la raíz cuadrada
del número, pero en el cálculo de la raíz se tarda más que en lo que
se ahorraría en divisiones. Este programa es un poco más rápido que el
de MonoBOT.

2012/12/26 kausdiv kaus...@gmail.com:
 Hola.
 Estoy aprendiendo Python (me gusta muchisimo).
 El problema que todo lo que escribo lo hago al estilo ceniano.  Es decir
 tipo C o java, y quiero adentrarme al estilo pythoniano.
 Por ejemplo este programita que busca los números primos entre 2 números
 dados.
 ---
 def fprimos(n,x):
 l=[]
 for i in range(n,x):
 isprime=1
 for k in range(2,i):
 if i % k ==0 and ik:
 isprime=0
 break
 if isprime==1:
 l.append(i)
 return l

 def main():
 ok=1
 while ok==1:
 print  imprime numeros primos desde hasta.
 print  0 = Salir 
 n1=raw_input(Valor inicial )
 n2=raw_input(Valor Final )
 n1=int(n1)
 n2=int(n2)
 if n1==0 or n2==0:
 ok=0
 else:
 print fprimos(n1,n2)

 main()

 ---
 ¿ como sería el mismo programa pasado a estilo python ?

 Gracias amigos.
 P.D.
 No tengo ni idea de ingles como para leer la documentación. :-(
 ___
 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/


Re: [Python-es] Pythoniano y c niano

2012-12-26 Por tema Daπid
On Dec 26, 2012 3:27 PM, Kiko kikocorre...@gmail.com wrote:
 Como comentas se intenta resolver un problema y hay mejores y peores
formas de resolverlo. Con el modo pythónico yo entiendo que se refiere a
seguir una serie de principios que permiten que el código sea más legible,
sencillo y elegante (esto último ya depende de cada cual).

Como dice el zen de Python, debería haber una, y sólo una, forma evidente
de hacerlo (aunque no se te ocurra en un principio, a menos que seas
neerlandés). Esto significa que debería haber una forma óptima de hacerlo,
de usar el lenguaje, que es concisa y elegante. Además, en esta forma
deberíamos de que es la mejor.
Estoy seguro de que cualquiera que haya escrito unas pocas líneas de Python
es capaz de entender mi programa, aunque no se le hubiera ocurrido hacerlo
así. También estaremos todos de acuerdo que mi solución es más legible que
la original. ¿Es la mejor? Pues como ninguno somos Guido :-), no podemos
saberlo, pero si alguien viene con otra solución mejor, la reconocemos.
En oposición a esto tenemos otros lenguajes como Perl. El código escrito
por alguien experimentado diferirá del del principiante, pero probablemente
también será muy diferente del de un experto. Y es más, el novato no podrá
entender el código de los otros dos. (Perl, el único lenguaje de
programación cuyo código tiene la misma pinta después de haber sido
cifrado).
Toda esta filosofía hace que Python sea muy legible y fácil de usar, pero
por otro lado, impide introducir ciertas características al lenguaje que
podrían producir código más eficiente pero difícil de leer. Es una decisión
de diseño y de base.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Pythoniano y c niano

2012-12-26 Por tema Daπid
Más fácil:

import time

t0 = time.time()

[...]

dt = time.time() - t0

print int(dt / 3600), ':', int(dt % 3600 / 60), ':', dt % 60

Si quieres, puedes meter eso en un decorador, pero yo lo uso
directamente. Así puedo medir tanto las funciones como el resto del
proceso.



2012/12/26 monoBOT monobot.s...@gmail.com:
 Para medir el tiempo de proceso yo uso lo siguiente:

 #! / usr / bin / env python
 # -*- coding: iso-8859-1 -*-

 import time


 def inicio():
 '''establece el tiempo de incio del proceso
 sin variables, sin salida'''
 return time.time()


 def final(t_inicio):
 '''define el final del proceso, devuelve el tiempo transcurrido en dias,
 horas minutos \n
 y segundos (estos con 4 decimales de precision)
 sin variables, salida por pantalla'''
 tsecs = (time.time() - t_inicio)
 if tsecs  60:
 if tsecs = 3600:
 if tsecs = 86400:
 print 'Tiempo de proceso:'
 print ' % d dias,  % d horas,  % d minutos,  % .4f
 segundos.' % (((tsecs / 86400)), (
 (tsecs % 86400) / 3600), ((tsecs % 86400) % 3600
 / 60), ((tsecs % 3600) % 60))
 else:
 print 'Tiempo de proceso:'
 print ' % d horas,  % d minutos,  % .4f segundos.' %
 (((tsecs / 3600)), (
 (tsecs % 3600) / 60), ((tsecs % 3600) % 60))
 else:
 print 'Tiempo de proceso:'
 print ' % d minutos,  % .4f segundos.' % (((tsecs % 3600) / 60),
 ((tsecs % 3600) % 60))
 else:
 print 'Tiempo de proceso:'
 print ' % .4f segundos.' % ((tsecs % 3600) % 60)


 def calc_tiempo(f):
 '''
 @funcionamiento: funcion decoradora que calcula el tiempo de ejecución
 de una funcion
 '''
 def decor(*args, **kwargs):
 ini = inicio()
 res = f(*args, **kwargs)
 final(ini)
 return res
 return decor


 @calc_tiempo
 def prim(n):
 if n == 1:
 return False
 if n == 2 or n == 3:
 return n
 max = int(n ** 0.5) + 1
 for m in xrange(2, max):
 if n % m:
 if m == int(n ** 0.5):
 return n
 else:
 return False

 prim(12993499359499)


 Me gustaria escuchar lo que los verdaderos gurus piensan, saludos!


 El 26 de diciembre de 2012 20:31, Chema Cortes pych...@gmail.com escribió:

 El día 26 de diciembre de 2012 21:26, Chema Cortes pych...@gmail.com
 escribió:
  El día 26 de diciembre de 2012 21:22, Chema Cortes pych...@gmail.com
  escribió:
 
  en una sóla línea:
 
  def fprimos(n,x):
return [x for x in range(n,x) if all(n%k!=0 for k in range(2,n))]
 
  He copiado y pegado muy rápido. La versión correcta:
 
  def fprimos(n,x):
return [x for x in range(n,x) if all(x%k!=0 for k in range(2,x))]

 Ibídem :P

 def fprimos(n,x):

   def isprime(p):
 return all(p%k!=0 for k in range(2,p))

   return [i for i in range(n,x) if isprime(i)]


 def fprimos(n,x):
   return [i for i in range(n,x) if all(i%k!=0 for k in range(2,i))]


 Siento la confusión.

 --
 Hyperreals *R: http://ch3m4.org/blog
 Quarks, bits y otras criaturas infinitesimales
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/




 --
 monoBOT
 Visite mi sitio(Visit my site): monobotblog.alvarezalonso.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/


Re: [Python-es] Resumen y enlaces de la primera Python-Sevilla el 30/11/2012

2012-12-02 Por tema Daπid
2012/12/2 Javier Gutierrez ukeit...@yahoo.es:
 Aunque éramos pocos (veintitantos en el momento de máxima audiencia)

Eso no son pocos, ni mucho menos. En Madrid, en  la primera reunión
éramos cinco o seis, y no sé si hemos llegado a los cuarenta en algún
momento.

¡Ánimo con ello!
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Duda de principiante

2012-11-20 Por tema Daπid
Por partes:

2012/11/20 Carlos Agulló Calvo cm.agu...@gmail.com:
 Hola de nuevo, tengo un par de dudas básicas más (por cierto, si este no es
 el sitio apropiado para mi nivel/poner dudas decidmelo);

Por supuesto que este es el lugar, para eso está.


 def abrirmes():
 mes=open('ABRIL2005.txt','r')
 [...]
 def leermes():
 fila=mes.readline()
 [...]
 abrirmes()
 leermes()

abrirmes() en efecto está abriendo el archivo, pero tienes que tener
en cuenta que mes es una variable local. Hagas lo que hagas con una
variable dentro de una función, al salir de la función se va a morir.


def f():
   x = 2
   print  'x es', x

x = 1
f() # Devuelve 2
print 'Ahora, x es', x # Devuelve 1.

Si quieres conservar tu estructura de funciones, tienes que devolver
los valores.

def f():
   x = 2
   return x

x = f()
print x  # Ahora sí que da 2.

Pero, ¿seguro que quieres hacer tantas funciones tan atómicas? Es
mucho más legible un código más continuo.


 y quiero que si el primer código es 0303201 me escriba la línea en el
 archivo est_0303201 y si no, pues que pase de línea;
 lo he intentado de la siguiente manera:

 infile=mes.readline()
 for line in infile:
 if line[1:8]==0303201:
 archivo_0303201.write(line)

 y me da error al leer line[1:8]

¡Ah! Errorcillo sutil. readline lee UNA línea, por lo que infile es
una cadena con la primera línea del archivo. for line in infile itera
sobre los elementos de la cadena (cada letra). Y claro, una letra no
tiene elementos del 1 al 8.

Lo que tú quieres hacer  es usar readlines(), con s al final, o usar
directamente el archivo. for line in mes

Tienes otro fallo: if line[1:8]==0303201 está comparando una cadena de
texto con un número, eso nunca va a ser verdad. Tienes que hacer if
line[1:8]=='0303201':

Para evitar equivocarte contando, puedes usar el método startswith de string:

if line.startswith('0303201', start = 1)

(El 1 es para saltarte el )
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Chequear código python

2012-11-17 Por tema Daπid
2012/11/17 Benito Rodríguez Arcos brar...@gmail.com

 Supongo que esto valdría, pero tendría que ejecutar el código que suben
 los usuarios a la web


Si no quieres ejecutarlo, la opción de las expresiones regulares es la
tuya. Eso sí, tendrías que comprobar que tus usuarios no han sido pérfidos
y la han redefinido en otro sitio.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Asociación y PyConEs

2012-11-15 Por tema Daπid
2012/11/15 Kiko kikocorre...@gmail.com

 Por otra parte, Francesc (Alted), si quieres, te puedo invitar a una (o
 varias) cerve(s) el finde para hablar sobre qué papel podría tomar
 Continuum en el tema. Si crees que vas a tener tiempo mándame un correo.


Por lo que había dicho en otro correo que a Continuum le interesaría, me
gustaría estar en esa discusión. Avisadme, por favor.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Estructuras de datos

2012-10-30 Por tema Daπid
2012/10/28 Rock Neurotiko miguelglafue...@gmail.com:
 Creas una clase persona, y en una lista, diccionario, o lo que se tercie,
 como datos estarian objetos de esa clase.

Y si lo que quieres es un contenedor de datos uniforme (donde el tipo
venga predefinido), más parecido a C++, puedes usar los struct arrays
de NumPy. Añades una dependencia, pero las operaciones son
rapidísimas.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Seguridad en Python

2012-10-30 Por tema Daπid
¿Qué es lo que quieres proteger, exactamente?

Si es el acceso a unos datos con una estructura cifrada usando una
lógica secreta (en un archivo C++ compilado), y Python para lo demás,
no es muy efectivo. Aunque no tenga ni idea de cómo narices funciona
tu código, puedo ver cómo lo llamas desde Python, y hacer yo lo mismo
sobre archivos vacíos y viendo la salida, así hasta que aprenda cómo
funciona.

Y esto, considerando tu código como una caja negra que no intento
abrir. Si además le acoplo un debugger u otras cosas, puedo saber
mucho más de lo que está pasando ahí.

2012/10/30 Dhannier Molina dhann...@gmail.com:
 Ok. Pero seria buena opción hacer el modulo de seguridad en un lenguaje
 compilado, por ejemplo como c++? Es decir, se quiere usar este modulo en
 diferentes partes del sistema para validar los accesos a los datos
 dependiendo de los perfiles de usuario. Evitar que el sistema reciba ataques
 al modulo de seguridad y que puedan modificar los permisos de accesos y
 demás... Seria buena opción combinar Python con C++...

 Disculpen las molestias...

 Saludos!!

 ___
 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/


Re: [Python-es] Presentación

2012-10-26 Por tema Daπid
2012/10/26 Hector R. De los Santos zah...@gmail.com:
 Te recomiendo uno.
 Autor: Roberto Alsina.
 Titulo: python no muerde, yo si.
 Muy buen libro, si no aprendes al menos te diviertes un rato ;)

A mí me pareció muy bueno si ya sabes algo de programación, ideal para
gente que venga a Python de otros lenguages, aunque no requiera mucho
nivel.

Sin embargo, la parte de programar una GUI es excelente, con un
ejemplo desde la priera versión a todas las correcciones y virguerías
que se le ocurren.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] 3d globe

2012-10-18 Por tema Daπid
Creo que con Visual Python [1] y un poco de curro se puede hacer. Una
de las texturas que vienen incluídas es una imagen satélite de la
Tierra, y en el código fuente lo único que han hecho ha sido añadido
la imagen plana, en una cierta proyección.


[1] http://www.vpython.org/

2012/10/18 Tony Peña emperor...@gmail.com:
 buenas,

 como o conque se puede hacer una presentacion de la tierra, y poner una
 posicion por ejemplo 0,0 un imagen pequeña cualquiera,
 he probado usando openstreetmap, y googlemaps, pero asi solo alcanzo a verlo
 en un plano, y lo mas bonito quedaria viendolo como en googleearth..
 que se pueda dar vueltas y esas cosas y se vea ese objeto en esa posicion.

 tambien probe marble pero funciona mas para la gente que sabe C/C++, los
 bindings para python no estan bien definidos aun y dan mucho problemas
 porque lo quiero usar con PyQt4
 y marble es de la gente de PyKDE.

 algo como python y opengl o cualquier otra via que uds conozcan que hayan
 utilizado, no se algun que otra persona que sea deutilidad en su carrera de
 geografo o cosas asi que le guste python puede que le haya pensado hacer
 cosas parecida usando esto, pero me gustaria poder tener un ejemplo
 donde se vea claro, lo mas simple posible,
 alguien tiene por ahi guardado algo como esto?.

 gracias.

 --
 Antonio Peña
 Secure email with PGP 0x8B021001 available at http://pgp.mit.edu
 Fingerprint: 74E6 2974 B090 366D CE71  7BB2 6476 FA09 8B02 1001

 ___
 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/


Re: [Python-es] Exactitud con números de punto flotante.

2012-09-02 Por tema Daπid
El calculo de la desviacion estandar necesita saber la media de la
poblacion. Si no sabes cual es la media REAL, puedes estimarla por la
media de tu muestra. Sin embargo, de esta forma siempre vas a
subestimar la desviacion estandar (en tu caso, std=5,4, pero si la
media real fuera 30, std=mucho). Para compensar esa estimacion por
defecto, se divide por N-1 en lugar de N.

La razon tecnica es que, al usar la media de la muestra (no la media
real), tienes N-1 grados de libertad. Eso significa que te basta con
saber N-1 numeros y la media para conocer todos los datos, mientras
que si sabes la media real (por cualquier razon), los N numeros son
independientes.

En todo caso, en el que es probablemente el mejor libro de calculo
numerico, Numerical Recipes (H. Press et al), dicen que si te preocupa
la diferencia entre N y N-1, es que tus datos no son suficientes, y
tus estadisticas, dudosas. :)

David.

2012/8/31 Jose Caballero jcaballero@gmail.com:


 Hola

 Creo que aqui se estan mezclando dos conceptos diferentes: lo que en ingles
 se llama standard deviation y population standard deviation.
 El primero es 5.4, el segundo 5.1


 Jose


 ___
 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/


  1   2   >