2013-02-03 2 views
0

헤더가 '#'이고 쉼표로 구분 된 데이터가 포함 된 파일이 있습니다. 즉일부 헤더가있는 텍스트 파일을 히스토그램 배열로 바꿈

#blah 
#blah 
#blah 
1, 2, 3, 4, 5, 6 
7, 8, 9,10,11,12 
... 

#을 건너 뛰고 데이터를 배열 (열에 대한 히스토그램)로 바꿀 수 있기를 원합니다. 이 내용을 읽습니다.

filename = 'input.txt' 
listin = [] 
for line in open(filename,'r'): 
    li=line.strip() 
    if not li.startswith("#"): 
     line = line.partition('#')[0] 
     #line = line.rstrip() 
     listin.append(line.split(',')) 

data = numpy.asarray(listin) 
SubData=data[:,0] 

hist,nbins = np.histogram(SubData) 

Error: 
TypeError: cannot perform reduce with flexible type 

답변

1

데이터를 숫자 형식으로 변환해야합니다. 배열에 문자열이 들어 있습니다.

listin.append([int(token) for token in line.split(',')]) 

또한 줄 바꿈 문자를 제거하려면 각 줄을 줄여야합니다.

0

또한 열에서 데이터를 반환

from numpy import loadtxt 
data = loadtxt("input.txt", comments="#", delimiter=",", unpack=True) 

같은 NumPy와 loadtxt를 사용할 수 있습니다

array([[ 1., 7.], 
    [ 2., 8.], 
    [ 3., 9.], 
    [ 4., 10.], 
    [ 5., 11.], 
    [ 6., 12.]]) 

사용 unpack=False은 행의 파일을로드 할 수 있습니다.

관련 문제