2017-01-03 1 views
0

몇 가지 목록으로 유니 코드 데이터 파일을 읽으려고합니다.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) 

는 이미와 공간 문제를 해결하기 위해 노력했다, missing_values=" ", replace_space='_' 매개 변수가 있지만 공백에 대해 빈 항목이있는 동일한 배열을 계속 가져옵니다. 이 모든 매개 변수는 구분 기호 조작만을위한 것입니다.

아이디어를 극복하는 방법은 무엇입니까?

파이썬 버전 3.4.5가 사용되고 있습니다.

+0

무엇이 문제입니까? 이것은 구조화 된 배열입니다. 3 번째 레코드의 빈 문자열? 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

흠. 그것은 나를 위해 작동하지 않았다. 오후 8시 30 분 P.S. 나는 파이썬 3.4.5를 사용하고있다. 이 특별한 경우에이 문제가 발생하는지 여부는 알 수 없습니다. –

+0

실제로 2.7을 사용하여 3.4.5에서 작동하지 않습니다. ^^ –

+0

명백히 (그러나 가장 못생긴) : decodef = lambda x : x.decode ("utf-8") if x.decode ("utf -8 ")! = ''else" " –

관련 문제