Numpy loadtxt 编码

4 投票
1 回答
19960 浏览
提问于 2025-04-18 12:55

我正在尝试用numpy.loadtxt来加载数据。我想读取的文件是用cp1252编码的。请问有没有办法用numpy来更改编码为cp1252呢?

下面这段代码:

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

运行后出现了:

UnicodeDecodeError: 'utf-8' 编码无法解码位置189的字节0xf6:无效的起始字节

这个文件包含了一些元数据(前面的几行)和后面的浮点数表格。

这个问题只在Ubuntu(12.04)上出现。在Windows上运行得很好。因此我觉得这个问题可能和编码有关。

用下面的方式打开文件也能正常工作:

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

不过我想直接用np.loadtxt把数据读进numpy数组里。

1 个回答

4

在用numpy读取文件之前,你得先用合适的编码打开这个文件:

import numpy as np
import codecs

n=10

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

撰写回答