2013-02-27 2 views
1

일부 평가가있는 텍스트 파일에서 마지막 몇 개의 열만로드하려고합니다. {- : -2, FUNC : FUNC 1}numpy의 변환기 옵션 genfromtxt는 열의 -ve 색인 생성을 허용하지 않습니다.

을하지만 그것은 작동하지 않습니다

나는 인수 컨버터 =으로 numpy.genfromtxt을 사용했다. 다른 한편으로는, 컨버터가 {56 : func, 57 : func}와 같은 정방향 인덱싱을하면 올바르게 동작합니다.

왜 변환기 인수가 파이썬의 역방향 인덱싱을 지원하지 않습니까? 마지막으로 열의 색인 만 알고있는 경우이 작업을 수행 할 수 있습니까?

답변

1

numpy.loadtxt을 사용하면이 기능이 작동하므로 converters 매개 변수를 사용하여 기능을 정의 할 수 있습니다. 와 tmp.txt 파일을 갖는

11,12,13,14,15,16,17,18,19 
21,22,23,24,25,26,27,28,29 
31,32,33,34,35,36,37,38,39 
41,42,43,44,45,46,47,48,49 
51,52,53,54,55,56,57,58,59 

당신은 (또한 당신이 그들을 적재 할 수 원하는 순서 chosing)로 선택한 열을로드 할 수

import numpy as np 
print np.loadtxt('tmp.txt',delimiter=',',usecols=(-2,-1)) 
#[[ 18. 19.] 
# [ 28. 29.] 
# [ 38. 39.] 
# [ 48. 49.] 
# [ 58. 59.]] 
print np.loadtxt('tmp.txt',delimiter=',',usecols=(-1,-2),converters={-1: lambda x: float(x)+100}) 
#[[ 119. 18.] 
# [ 129. 28.] 
# [ 139. 38.] 
# [ 149. 48.] 
# [ 159. 58.]] 
+0

예, np.loadtxt 뒤로 인덱싱을 지원합니다. 하지만 내 텍스트 파일이 완전히 숫자가 아니었고 일부 열에 문자열 항목이 있습니다. 그래서 나는 loadtxt를 사용할 수 없었다. – indiajoe

+1

당신은'dtype = object'를 전달하거나, 구조화 된 배열에서 다른 타입을 사용하여 각 컬럼을 읽으려면'dtype = { 'names': ('col1', 'col2', 'col3') , 'formats': (int, str, float)}'예 : –

+0

오. 알았어 고마워. 이 기능으로, 나는 loadtxt로 관리 할 수 ​​있어야합니다. 나는 테이블에서 누락 된 값 항목이없는 한 genfromtxt 대신 loadtxt를 사용할 수 있어야한다고 생각합니다. 다시 한번 감사드립니다. – indiajoe

관련 문제