Consider a text file called "new.txt" containing the following elements:
μm
?r
?λ
In Python 2.7, I can read the file by typing:
>>> import codecs
>>> f = codecs.open('new.txt', encoding='utf-8')
>>> lines = [line.strip() for line in f2.readlines()]
>>> lines
[u'u03bcm', u'u2202r', u'u2206u03bb']
>>> print lines[0]
μm
So far so good. I can easily convert this list to a numpy array via:
>>> import numpy as np
>>> arr = np.array(lines)
>>> arr
array([u'u03bcm', u'u2202r', u'u2206u03bb'],
dtype='<U2')
The issue is, I can't read this file directly via numpy's loadtxt function:
>>> 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)
What is the correct way to read this file into numpy directly?
Thanks.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…