2012-06-28 5 views
2

MATLAB에서 생성 된 .dat 파일 (float 값 포함)이 있습니다. .dat 파일에서와 같은 수의 행과 열을 포함하는 배열로 변환해야합니다. 누구든지이 일을하는 방법을 제안 할 수 있습니까? 제거하려는 각 행의 끝에 \n이 있습니다..dat 파일을 배열로 변환

12,18\n42,17\n60,16\n86,17\n120,17\n137,12\n169,10\n189,14\n215,9\n248,11\n273,12\n301,17\n319,8\n345,17\n378,14\n403,10\n423,10\n453,18\n483,10\n507,15\n10,43\n43,44\n60,38\n96,41\n114,41\n139,41\n168,43\n189,40\n215,37\n248,45\n268,45\n301,37\n321,35\n

그리고 출력이 다음과 같은 형식으로 싶습니다 : : 파이썬으로 읽은 .DAT 파일은 다음과 같다

12,18 
42,17 
... 
12,42

18,17 다른 컬럼에 있습니다.

+0

당신이 몇 가지 예제 데이터를 제공 할 수 있습니까? 행의 수는 행마다 다릅니다? – 18bytes

+0

아마도 이것은 이전 [질문] (http://stackoverflow.com/q/11243736/623518)에 대한 후속 질문입니다. 이 이전 질문에 대한 답을 찾은 경우 도움이되는 대답을 upvote하고 그 중 하나를 수락하는 것을 잊지 마십시오. – Chris

+0

@Chris : 왜 출력 형식 설명에서''12,18''을''12, 18''로 변경했는지 설명해주십시오. 그건 같은 것이 아닙니다. – lqc

답변

1

배열이란 무엇입니까?

with open('datafile','r') as f: 
    rows=[map(float,L.strip().split(',')) for L in f] # list of lists 

arr=np.array(rows) #Numpy array (assuming you `import numpy as np`) 

또는 numpy.loadtxt 사용 :

arr=np.loadtxt('datafilename',delimiter=',') 
+0

@devsundar : 게시물을 편집하고 샘플 데이터와 출력 형식을 제공했습니다. – user1482980

+0

: 내가 제안한 코드보다 hte가 더 많은 \ n 문자를 가지고 있기 때문에 오류가 발생했습니다 (ValueError : float()에 대한 유효하지 않은 리터럴 : 12,18) – user1482980

+0

@ user1482980 - 미안하지만, csv 파일. 그에 따라 업데이트되었습니다. 문제는 개행 문자가 아니고 쉼표였습니다. – mgilson