小编Ale*_*dro的帖子

Python3中的numpy genfromtxt问题

我正在尝试使用genfromtxtPython3来读取包含字符串和数字的简单csv文件.例如,类似于(以下称为"test.csv"):

1,a
2,b
3,c
Run Code Online (Sandbox Code Playgroud)

使用Python2,以下工作正常:

import numpy
data=numpy.genfromtxt("test.csv", delimiter=",", dtype=None)
# Now data is something like [(1, 'a') (2, 'b') (3, 'c')]
Run Code Online (Sandbox Code Playgroud)

在Python3中,相同的代码返回[(1, b'a') (2, b'b') (3, b'c')].由于Python3读取文件的方式不同,这在某种程度上是预期的.因此我使用转换器来解码字符串:

decodef = lambda x: x.decode("utf-8")
data=numpy.genfromtxt("test.csv", delimiter=",", dtype="f8,S8", converters={1: decodef})
Run Code Online (Sandbox Code Playgroud)

这适用于Python2,但不适用于Python3(相同的[(1, b'a') (2, b'b') (3, b'c')]输出.但是,如果在Python3中我使用上面的代码只读一列:

data=numpy.genfromtxt("test.csv", delimiter=",", usecols=(1,), dtype="S8", converters={1: decodef})
Run Code Online (Sandbox Code Playgroud)

输出字符串['a' 'b' 'c']已按预期解码.

我也试着提供文件的输出open'rb'模式,如建议在这个环节,但目前还没有改进.

为什么只读取一列时转换器工作,而不读取两列时?你能否告诉我genfromtxt在Python3中使用的正确方法?难道我做错了什么?先感谢您!

python numpy python-3.x genfromtxt

4
推荐指数
1
解决办法
6872
查看次数

标签 统计

genfromtxt ×1

numpy ×1

python ×1

python-3.x ×1