Considere un archivo de texto llamado "nuevo.txt" que contiene los siguientes elementos:elementos Unicode de lectura en una matriz numpy
μm
∂r
∆λ
En Python 2.7, puedo leer el archivo escribiendo:
>>> import codecs
>>> f = codecs.open('new.txt', encoding='utf-8')
>>> lines = [line.strip() for line in f2.readlines()]
>>> lines
[u'\u03bcm', u'\u2202r', u'\u2206\u03bb']
>>> print lines[0]
μm
Hasta aquí todo bien. Puedo convertir fácilmente esta lista a un conjunto numpy a través de:
>>> import numpy as np
>>> arr = np.array(lines)
>>> arr
array([u'\u03bcm', u'\u2202r', u'\u2206\u03bb'],
dtype='<U2')
La cuestión es que no puede leer este archivo directamente a través de la función loadtxt de numpy:
>>> np.loadtxt('new.txt', dtype=np.unicode_)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/numpy/lib/npyio.py", line 805, in loadtxt
X = np.array(X, dtype)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 0: ordinal not in range(128)
¿Cuál es la forma correcta de leer este archivo en numpy directamente?
Gracias.
+1 - pero una nota: puede pasar un archivo abierto directamente a 'loadtxt', y para mí, abrir el archivo con' codecs.open' y pasarlo a 'loadtxt' resolvió el problema. ¡O más bien un problema similar, ya que mi 'loadtxt' no tenía ningún problema con un archivo utf-8! – senderle
@senderle: Extraño: no funciona para mí. Estoy usando NumPy 1.5.1 aquí - tal vez esto importe. –
¿Tiene esto algo que ver con el uso del puerto numpy Python 3 ?. Todavía obtengo UnicodeEncodeError en my numpy, que funciona bajo Python 2.7. –