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...@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 <flx...@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...@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 <flx...@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 <juanlu...@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@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.es
>>> http://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
>> 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@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/

Responder a