El 29 de diciembre de 2015, 23:24, Rolando Paz <flx...@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... :-) > > > 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 -> 0x00000000 / 0b00000000000000000000000000000000 / 00000000000x01FB / 00507 -> 0x00000000 / 0b00000000000000000000000000000000 / 00000000000x01FC / 00508 -> 0x00000000 / 0b00000000000000000000000000000000 / 00000000000x01FD / 00509 -> 0xFFB63CAF / 0b11111111101101100011110010101111 / 00-48341290x01FE / 00510 -> 0x00000000 / 0b00000000000000000000000000000000 / 00000000000x01FF / 00511 -> 0x00000000 / 0b00000000000000000000000000000000 / 00000000000x0200 / 00512 -> 0x00000000 / 0b00000000000000000000000000000000 / 0000000000"""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'kkkkkk' en un string literal "b'kkkkkk'" ¿?¿?¿?* *## 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 str if '-' 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/