2017-01-03 3 views
0

Я пытаюсь прочитать файл данных unicode в несколько списков. У меня есть смешанный юникода/число/с плавающей точкой файл данных этого формата:Отсутствующие пробелы в массиве numpy

Է 1335 1.1 
դ 1380 1.2 
    32 1.3 
ն 1398 1.4 
ե 1381 1.5 
ր 1408 1.6 

Я читаю файл с numpy genfromtxt по этому вопросу numpy.genfromtxt:

decodef = lambda x: x.decode("utf-8") 
arr = np.genfromtxt("./data_files/data", delimiter="\t", dtype="U1, i4, f8", converters={0: decodef}) 

Это дает мне numpy.ndarray не содержащие пробелов , но пустые элементы для пространств в первом столбце:

('Է', 1335, 1.1) 
('դ', 1380, 1.2) 
('', 32, 1.3) 
('ն', 1398, 1.4) 
('ե', 1381, 1.5) 
('ր', 1408, 1.6) 

Я уже пытались решить проблему пространства с autostrip=False (the default value), missing_values=" ", replace_space='_', но все равно получить тот же массив с пустыми элементами для пробелов. Думаю, все эти параметры предназначены только для манипуляции с разделителями ?!

Любые идеи, как преодолеть это?

Python версия 3.4.5 используется.

+0

В чем проблема? Это структурированный массив. Пустая строка в третьей записи? Учитывая dtype, дисплей массива выглядит нормально. – hpaulj

+0

Да, пустая строка в третьей записи. Для других символов все работает так, как ожидалось. Отредактировал эту часть, чтобы уточнить.) –

+0

Некоторые параметры применяются к именам полей, а не значениям. Есть ли параметр значения заполнения? – hpaulj

ответ

1

По-видимому, метод genfromtxt каким-то образом удаляет пространство.

Если вы используете

decodef = lambda x: x.decode("utf-8") if x != '' else " " 
arr = np.genfromtxt("text", delimiter="\t", dtype="U1, i4, f8",converters={0: decodef}) 

Он работает. Я все еще не совсем понимаю, почему.

+0

Hm. Это не сработало для меня. P.S. Я использую Python 3.4.5. Не знаю, имеет ли это значение в этом конкретном случае или нет. –

+0

Действительно, это использовало 2.7, и оно не работает в 3.4.5 ^^ –

+0

Очевидное (но самое уродливое): decodef = lambda x: x.decode ("utf-8"), если x.decode ("utf -8 ")! = '' Else" " –

Смежные вопросы