проблемы с numby genfromtxt в Python3
я пытаюсь использоватьgenfromtxt
с Python3, чтобы прочитать простойCSV файл, содержащий строки и числа. Например, что-то вроде (далее "test.csv»):
1,a
2,b
3,c
с Python2 хорошо работает следующее:
import numpy
data=numpy.genfromtxt("test.csv", delimiter=",", dtype=None)
# Now data is something like [(1, 'a') (2, 'b') (3, 'c')]
в 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})
Это работает с 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})
выходные строки['a' 'b' 'c']
, уже декодирован, как и ожидалось.
Мы также пытались предоставить файл в качестве выходногоopen
с'rb'
режим, как предлагается вэта ссылка, но улучшений нет.
Почему конвертер работает, когда читается только один столбец, а не когда два столбца читаются? Не могли бы вы предложить мне правильный способ использованияgenfromtxt
в Python3? Я делаю что-то неправильно? Заранее спасибо!