2014-07-09 3 views
2

새 텍스트 파일을 열고 numpy 배열을 파일에 저장하려고합니다. 무슨 잘못CSV 파일에 수치적인 배열을 쓰는 방법은 무엇입니까?

TypeError         Traceback (most recent call last) 
<ipython-input-33-fea41927952b> in <module>() 
     2 model = cool 
     3 abc = open('file'+'_2', 'w') 
----> 4 np.savetxt(abc, foo, delimiter=",") 

/usr/local/lib/python3.4/site-packages/numpy/lib/npyio.py in savetxt(fname, X, fmt,  delimiter, newline, header, footer, comments) 
    1071   else: 
    1072    for row in X: 
-> 1073     fh.write(asbytes(format % tuple(row) + newline)) 
    1074   if len(footer) > 0: 
    1075    footer = footer.replace('\n', '\n' + comments) 

TypeError: must be str, not bytes 

사람이 알고 있나요 :

foo = np.array([1,2,3]) 
abc = open('file'+'_2', 'w') 
np.savetxt(abc, foo, delimiter=",") 

내가이 오류 : 나는 코드의이 비트를 썼다?

또한, 터미널에서 file_2라는 빈 파일을 찾았지만 그 안에 아무것도 쓰이지 않았습니다.

편집 : 당신이 Python3을 사용하는 표시 Python3.4

+0

사용하는 파이썬의 어떤 버전 : 그래서 그 대신 파일 핸들을 사용하여, 단순히 np.savetxt에 첫 번째 인수로 파일의 이름을 전달하는 것이 더 쉬울 수 있습니다? 또한''file '+'_2'' 할 필요도 없습니다. 단지 컴퓨터가 하드 코딩 할 수있는 뭔가를 생성하도록 만드는 것입니다 :''file_2''. –

+0

나를 위해 잘 작동 python3 –

+0

그래, 난 python3을 사용하고있다 – tooty44

답변

6

을 사용하고 있습니다. 따라서, 바이너리 모드 (wb)이 아닌 텍스트 모드 (w)에서 파일을 엽니 또한

import numpy as np 
foo = np.array([1,2,3]) 
with open('file'+'_2', 'wb') as abc: 
    np.savetxt(abc, foo, delimiter=",") 

를 모든 디스크에 기록하기 위해, 파일 핸들, abc을 닫습니다. 위의 그림과 같이 with-statement을 사용하면됩니다.

DSM은 일반적으로 np.savetxt을 사용할 때 np.loadtxt을 사용하는 것을 방해 할 수 있으므로 파일에 다른 것을 쓰고 싶지는 않을 것이라고 지적합니다.

import numpy as np 
foo = np.array([1,2,3]) 
np.savetxt('file_2', foo, delimiter=",") 
+1

당신이 기존 파일에 추가하지 않는 한, 나는 거기에 핸들을 전달할 이유가 많은지 모르겠다. 'savetxt'에 대한 첫 번째 인수로''file_2 "'를 전달할 수도 있습니다. – DSM

+0

@DSM : 예, 당신이 옳다고 생각합니다. 편집 중 ... – unutbu

+0

감사합니다, 매력처럼 작동합니다. +1 – tooty44

관련 문제