Re: [Python-es] numpy.absolute

2015-12-30 Por tema Kiko
El 29 de diciembre de 2015, 23:24, Rolando Paz  escribió:

> Hola Yamila
>
> Muchas gracias por tu correo.
>
> Lo que necesito es corregir cualquier valor negativo que tenga ceros a la
> izquierda.
>
> Algunos ejemplos:
>
> -1
> 00-355
> -54623
> 000-56
> 0-98756874
>
> El valor negativo depende de la potencia en dBm de la senial analógica que
> le ingrese a la tarjeta que estoy usando.
>
> Al colocar el print para observar el contenido de "y", observo esto:
>
> ['00' '00' '00' '00-4834129' '00'
>  '00' '00' '00']
>
> Veo cadenas separadas por un espacio en blanco.
>
> cols = np.loadtxt(args.bram, dtype=str, usecols=[2,8])
>
> x = cols[:,0]
> y = cols[:,1]
>
> print 'este es el contenido de y =',y
>
> y = float(str(y[0]).lstrip("0"))
>
> El error que surge es este:
>
> Traceback (most recent call last):
>   File "plot_bram.py", line 28, in 
> y = float(str(y[0]).lstrip("0"))
> ValueError: could not convert string to float:
>
> Seguire intentando... :-)
>
>
>
Hola, Rolando.

Entiendo que estás trabajando en Python3.

np.loadtxt produce un error que no está resuelto desde hace mucho tiempo
(ver [1] y [2], por ejemplo). Parece que se resolverá en numpy 1.11
incluyendo un keyword encoding [3].

Este error lleva a muchos problemas al leer ficheros de strings con
np.loadtxt (sobretodo en python3 y numpy).

Por otro lado, estás intentando aplicar métodos de str a numpy arrays. Esto
no es posible y te devuelve los errores que estás viendo.

A continuación dejo un código comentado que debería funcionar:

































* Importamos
librerías##import ioimport numpy as
npimport matplotlib.pyplot as
plt
Todo esto es para simular un
fichero##raw_data = """0x01FA /
00506 -> 0x / 0b / 000x01FB
/ 00507 -> 0x / 0b /
000x01FC / 00508 -> 0x / 0b
/ 000x01FD / 00509 -> 0xFFB63CAF /
0b1011011000001010 / 00-48341290x01FE / 00510 -> 0x
/ 0b / 000x01FF / 00511 ->
0x / 0b / 000x0200 / 00512
-> 0x / 0b / 00"""file_sim
=
io.StringIO(raw_data)
Leemos los datos, fíjate en el dtype## Si usamos 'dtype = str' se rompe
todo y ## nos convierte el string regular de python3 b'kk' en un string
literal "b'kk'" ¿?¿?¿?*

*## para tu caso debes cambiar file_sim por la ruta a tu fichero.*










*##cols = np.loadtxt(file_sim,
dtype = bytes, usecols = [2,
8])
Asignamos x e y,## Ahora, x e y son numpy arrays de una dimensión con
elementos como bytes,## un numpy array no tiene el método split u otros
típicos de strings,## Para poder transformar los bytes dentro del array a
un integer, por ejemplo, *

*## primero hemos de decodificar el byte a str y sobre el str aplicar el
método lstrip*

*## habría que iterar sobre los elementos del array, *

*## Hago un bucle forr para que se entienda lo que hace, se podría hacer en
una sola línea,*


















*## cada elemento del array sí que tiene el método split ya que AHORA son
strings##x = cols[:,0].astype(int)y
= cols[:,1]y_modificado = np.empty_like(y)for i, elem in enumerate(y):
elem = elem.decode() # pasamos de byte a strif '-' in elem:
y_modificado[i] = elem.lstrip('0')else:y_modificado[i] =
elemy_modificado =
y_modificado.astype(float)plt.plot(x,y_modificado)plt.show()*

Si no se entiende algo a o te falla seguirmos iterando.

[1] https://github.com/numpy/numpy/issues/2715
[2] https://github.com/numpy/numpy/issues/4600
[3] https://github.com/numpy/numpy/pull/4208
___
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-30 Por tema Álvaro Glez .
Puedes aplicar np.char.lstrip  directamente a la fila/s   y/o   columa/s   
donde tienes el problema

http://docs.scipy.org/doc/numpy-1.7.0/reference/generated/numpy.core.defchararray.lstrip.html#numpy.core.defchararray.lstrip

y después cambiar el tipo del array

Un ejemplo:

>>> a = np.array(['00-20', '00-3','000'])
>>> a
array(['00-20', '00-3', '000'], 
  dtype='>> a[:2] = np.char.lstrip(a[:2], '0')
>>> a
array(['-20', '-3', '000'], 
  dtype=':
Gracias por todos los consejos.
Hice esto:
cols = np.loadtxt(args.bram, dtype=str, usecols=[2,8])
x = cols[:,0]y = cols[:,1]
max_x = np.argmax(y)
y = float(str(y).lstrip("0"))
plt.plot(x,y)
plt.show()
El nuevo error es este:
$ python plot_bram.py -b bram_ac_real_test -f 50Traceback (most recent call 
last):  File "plot_bram.py", line 27, in y = 
float(str(y).lstrip("0"))ValueError: could not convert string to float: 
['00' '00' '00' '00-4834129' '00' '00' 
'00' '00']
Entiendo que este es el contenido del arreglo "y":
['00' '00' '00' '00-4834129' '00' '00' 
'00' '00']
Esta representación esta correcta?




El 29 de diciembre de 2015, 12:37, Yamila Moreno Suárez  
escribió:
Rolando, el error te indica que tienes un tipo "ndarray" y que los ndarray no 
tienen "lstrip". 

lstrip es un método de strings (cadenas de texto), como la que ves en el 
ejemplo que te dio Juanlu.

Siguiendo con los consejos que te han dado en correos anteriores, lo que 
tendrías que hacer es (1)pasar el valor de tu ndarray (que si no me equivoco es 
00-48) a string, (2)aplicarle la modificación y (3)después volver a pasarlo 
al tipo que necesites. 

en varios pasos:
y = str(y)
y = y.lstrip("0")
y = float(y)

en un solo paso:
y = float(str(y).lstrip("0"))

suerte :)



2015-12-29 19:20 GMT+01:00 Rolando Paz :
Mira lo que surge:
$ python plot_bram.py -b bram_ac_real -f 50Traceback (most recent call last):  
File "plot_bram.py", line 27, in y = y.lstrip("0")AttributeError: 
'numpy.ndarray' object has no attribute 'lstrip'
Codigo:
cols = np.loadtxt(args.bram, dtype=str, usecols=[2,8])
x = cols[:,0]y = cols[:,1]
max_x = np.argmax(y)
y = y.lstrip("0")
plt.plot(x,y)
plt.show()




El 29 de diciembre de 2015, 12:10, Juan Luis Cano  
escribió:

  

  
  
On 2015-12-29 18:20, Rolando Paz wrote:


Lo que entiendo que
necesito es encontrar una función que elimine todos los ceros a
la izquierda del signo menos.


Tal vez puedes probar con



>>> "00-4834129".lstrip("0")

'-4834129'



https://docs.python.org/3/library/stdtypes.html#str.lstrip



Juan Luis

  


___

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/




-- 
Yamila  Moreno Suárez
http://dendarii.eshttp://moduslaborandi.net


___

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


Re: [Python-es] numpy.absolute

2015-12-30 Por tema Pedro Jorge De Los Santos
Rolando,


Puedes probar con lo siguiente:

y = np.array([float(y[k].split("-")[-1]) for k in range(len(y))])

Y lo mismo con el array "x"...

En este caso, no necesitarás utilizar np.absolute porque el método split
"elimina" el signo negativo.



Saludos.

El 29 de diciembre de 2015, 16:24, Rolando Paz  escribió:

> Hola Yamila
>
> Muchas gracias por tu correo.
>
> Lo que necesito es corregir cualquier valor negativo que tenga ceros a la
> izquierda.
>
> Algunos ejemplos:
>
> -1
> 00-355
> -54623
> 000-56
> 0-98756874
>
> El valor negativo depende de la potencia en dBm de la senial analógica que
> le ingrese a la tarjeta que estoy usando.
>
> Al colocar el print para observar el contenido de "y", observo esto:
>
> ['00' '00' '00' '00-4834129' '00'
>  '00' '00' '00']
>
> Veo cadenas separadas por un espacio en blanco.
>
> cols = np.loadtxt(args.bram, dtype=str, usecols=[2,8])
>
> x = cols[:,0]
> y = cols[:,1]
>
> print 'este es el contenido de y =',y
>
> y = float(str(y[0]).lstrip("0"))
>
> El error que surge es este:
>
> Traceback (most recent call last):
>   File "plot_bram.py", line 28, in 
> y = float(str(y[0]).lstrip("0"))
> ValueError: could not convert string to float:
>
> Seguire intentando... :-)
>
>
> El 29 de diciembre de 2015, 13:05, Yamila Moreno Suárez <
> yamila...@gmail.com> escribió:
>
>> Rolando, un par de cositas:
>>
>> Si *y* tiene el valor que nos pasas, entonces tu código tiene que ser
>> algo como:
>>
>> *y = float(str(y[0]).lstrip("0"))*
>>
>> ¡ojo! en lstrip la "l" significa "left", así que solo te quita los ceros
>> de la izquierda. ¿así te sirve?
>>
>> Por otro lado, te doy un par de pistas para que tú mismo hagas debugging
>> del programa:
>>
>> 1) usa print, sí tal cual. Añade en tu programa líneas con:
>>
>> *print(" VALOR DE Y ANTES DE TAL O CUAL TRANSFORMACION ", y)*
>>
>> 2) usa pdb. Si en cualquier línea de tu programa pones "*import pdb;
>> pdb.set_trace()*", al lanzar la ejecución se parará en ese punto, y te
>> dará un intérprete de python con las variables de tu programa, de forma que
>> puedes investigar qué valor tiene en un punto concreto.
>>
>> El problema que estás teniendo tiene mucho de "afinar" el resultado como
>> te guste, o como lo necesites según el caso, y para eso, es muy
>> recomendable que estés constantemente evaluando qué valores tienen las
>> variables y probando las transformaciones que necesites.
>>
>> ¡¡mucho ánimo!!
>> yami
>>
>>
>>
>> 2015-12-29 19:47 GMT+01:00 Rolando Paz :
>>
>>> Gracias por todos los consejos.
>>>
>>> Hice esto:
>>>
>>> cols = np.loadtxt(args.bram, dtype=str, usecols=[2,8])
>>>
>>> x = cols[:,0]
>>> y = cols[:,1]
>>>
>>> max_x = np.argmax(y)
>>>
>>> y = float(str(y).lstrip("0"))
>>>
>>> plt.plot(x,y)
>>> plt.show()
>>>
>>> El nuevo error es este:
>>>
>>> $ python plot_bram.py -b bram_ac_real_test -f 50
>>> Traceback (most recent call last):
>>>   File "plot_bram.py", line 27, in 
>>> y = float(str(y).lstrip("0"))
>>> ValueError: could not convert string to float: ['00'
>>> '00' '00' '00-4834129' '00'
>>>  '00' '00' '00']
>>>
>>> Entiendo que este es el contenido del arreglo "y":
>>>
>>> ['00' '00' '00' '00-4834129' '00'
>>>  '00' '00' '00']
>>>
>>> Esta representación esta correcta?
>>>
>>>
>>>
>>>
>>>
>>> El 29 de diciembre de 2015, 12:37, Yamila Moreno Suárez <
>>> yamila...@gmail.com> escribió:
>>>
 Rolando, el error te indica que tienes un tipo "ndarray" y que los
 ndarray no tienen "lstrip".

 lstrip es un método de strings (cadenas de texto), como la que ves en
 el ejemplo que te dio Juanlu.

 Siguiendo con los consejos que te han dado en correos anteriores, lo
 que tendrías que hacer es (1)pasar el valor de tu ndarray (que si no me
 equivoco es 00-48) a string, (2)aplicarle la modificación y (3)después
 volver a pasarlo al tipo que necesites.

 en varios pasos:
 y = str(y)
 y = y.lstrip("0")
 y = float(y)

 en un solo paso:
 y = float(str(y).lstrip("0"))

 suerte :)



 2015-12-29 19:20 GMT+01:00 Rolando Paz :

> Mira lo que surge:
>
> $ python plot_bram.py -b bram_ac_real -f 50
> Traceback (most recent call last):
>   File "plot_bram.py", line 27, in 
> y = y.lstrip("0")
> AttributeError: 'numpy.ndarray' object has no attribute 'lstrip'
>
> Codigo:
>
> cols = np.loadtxt(args.bram, dtype=str, usecols=[2,8])
>
> x = cols[:,0]
> y = cols[:,1]
>
> max_x = np.argmax(y)
>
> y = y.lstrip("0")
>
> plt.plot(x,y)
> plt.show()
>
>
>
>
> El 29 de diciembre de 2015, 12:10, Juan Luis Cano  > escribió:
>
>> On 2015-12-29 18:20, Rolando Paz 

[Python-es] Answer Machine Detection Python

2015-12-30 Por tema FERNANDO VILLARROEL via Python-es
Hola comunidad.
Tengo un requerimiento que consiste en detectar cuando un llamado originado 
desde una PBX; ejemplo Asterisk; es contestado por un humano o por una 
maquina.En Asterisk existe un desarrollo AMD (Answer Machine Detection) pero 
esta abandonado desde hace bastante rato.Mi idea es poder realizar algo al 
respecto en Python; he googleado he encontrado info usando redes neuronales; me 
parece genial; es decir que la red vaya aprendiendo cuando contesta una 
maquina, no se si este un poco sobredimensionado para lo que yo necesito; 
además que no tengo experiencia en redes neuronales.
La verdad es que nunca he usado Python desde un punto de vista científico ya 
sea usando numpy o scipy, pero me imagino que lo pretendo hacer va por ese lado.
Mi consulta es si alguno de ustedes conoce algo sobre el tema o si bien existe 
algún desarrollo o libreria en python que me ayude en tal sentido.
Quedo atento a sus comentarios.Aprovecho de desearles a todos una felices 
fiestas de fin de año.
Saludos
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/