Numpy loadtxt encoding

丶灬走出姿态 提交于 2019-12-07 20:33:57

问题


I am trying to load data with numpy.loadtxt... The file im trying to read is using cp1252 coding. Is there a possibility to change the encoding to cp1252 with numpy?

The following

import numpy as np
n = 10
myfile = '/path/to/myfile'
mydata = np.loadtxt(myfile, skiprows = n)

gives:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 189: invalid start byte

The file contains metadata (first n rows) followed by a table of floats.

Edit: This problem only occurs when running this on Ubuntu (12.04). On Windows it works well. For this reason I think this problem is related to the encoding.

Edit2: opening the file as shown in the following works well, too:

import codecs
data = codecs.open(myfile, encoding='cp1252')
datalines = data.readlines()

However I'd like to use np.loadtext to directly read the data into a numpy array.


回答1:


I could solve the problem by myself.

I just had to open the file with the appropriate before reading it with numpy:

import numpy as np
import codecs

n=10

filecp = codecs.open(myfile, encoding = 'cp1252')
mydata = np.loadtxt(filecp, skiprows = n)

Thank you everyone!



来源:https://stackoverflow.com/questions/24694736/numpy-loadtxt-encoding

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!