[Python-es] numpy.absolute

monoBOT monobot.soft en gmail.com
Mie Dic 30 04:36:40 EST 2015


de entrada te digo que no conozco numpy ... pero en python casi todas las
clases (bien hechas) tienen un metodo __str__ que permite visualizar el
objeto como string, en tu casi ese metodo ha de existir ya que tu print
arroja una representación el objeto.

Seguro que hay formas muchisimas veces mas eficientes de obtener el
"numero" de cada posición directamente para ello tienes que estudiarte la
documentación. No obstante puedes hacer lo siguiente:

si Y es tu objeto

y.__str__()
es la representación en string de tu objeto

y.__str__()[.split(' ')
es tu objeto convertido en lista de strings tomando el espacio como
separador.

y.__str__()[.split(' ')[3]
es el cuarto objeto de la lista, que sería el  '00-4834129'

y.__str__()[.split(' ')[3].replace("'", "")
como tiene ' las tenemos que borrar para que no tengamos problemas mas
adelante

y.__str__()[.split(' ')[3].lstrip['0']
quitamos los 0 a la izquierda

y.__str__()[.split(' ')[3].lstrip['0'].replace('-')
le quitamos el signo - si lo tiene

int(y.__str__()[.split(' ')[3].lstrip['0'].replace('-'))
por último tenemos el valor entero de la representación en string

El 29 de diciembre de 2015, 22:24, Rolando Paz <flxpaz en gmail.com> escribió:

> Hola Yamila
>
> Muchas gracias por tu correo.
>
> Lo que necesito es corregir cualquier valor negativo que tenga ceros a la
> izquierda.
>
> Algunos ejemplos:
>
> 00000000-1
> 000000-355
> 0000-54623
> 0000000-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:
>
> ['0000000000' '0000000000' '0000000000' '00-4834129' '0000000000'
>  '0000000000' '0000000000' '0000000000']
>
> 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 <module>
>     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.ms en 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 <flxpaz en gmail.com>:
>>
>>> 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 <module>
>>>     y = float(str(y).lstrip("0"))
>>> ValueError: could not convert string to float: ['0000000000'
>>> '0000000000' '0000000000' '00-4834129' '0000000000'
>>>  '0000000000' '0000000000' '0000000000']
>>>
>>> Entiendo que este es el contenido del arreglo "y":
>>>
>>> ['0000000000' '0000000000' '0000000000' '00-4834129' '0000000000'
>>>  '0000000000' '0000000000' '0000000000']
>>>
>>> Esta representación esta correcta?
>>>
>>>
>>>
>>>
>>>
>>> El 29 de diciembre de 2015, 12:37, Yamila Moreno Suárez <
>>> yamila.ms en 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 <flxpaz en gmail.com>:
>>>>
>>>>> 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 <module>
>>>>>     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 <juanlu001 en gmail.com
>>>>> > 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 en python.org
>>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Python-es mailing list
>>>>> Python-es en python.org
>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Yamila  Moreno Suárez
>>>> http://dendarii.es
>>>> http://moduslaborandi.net
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> https://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>>
>> --
>> Yamila  Moreno Suárez
>> http://dendarii.es
>> http://moduslaborandi.net
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>


-- 
*monoBOT*
Visite mi sitio(Visit my site): monobotsoft.es/blog/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20151230/f60202e5/attachment.html>


Más información sobre la lista de distribución Python-es