¿Cómo escribir una matriz numpy en un archivo csv?

Quiero abrir un nuevo archivo de texto y luego guardar la matriz numpy en el archivo. Escribí este bit de código:

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

Me sale este error:

 TypeError Traceback (most recent call last)  in () 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 

¿Alguien sabe qué está mal?

Además, encontré un archivo vacío creado en el terminal llamado archivo_2, pero no hay nada escrito en él.

EDITAR: estoy usando Python3.4

Parece que está utilizando Python3. Por lo tanto, abra el archivo en modo binario ( wb ), no en modo de texto ( w ):

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

Además, cierre el identificador de archivo, abc , para asegurarse de que todo esté escrito en el disco. Puede hacerlo utilizando una sentencia with (como se muestra arriba).

Como señala DSM, generalmente cuando usa np.savetxt no querrá escribir nada más en el archivo, ya que hacerlo podría interferir con el uso de np.loadtxt más adelante. Entonces, en lugar de usar un identificador de archivo, puede ser más fácil simplemente pasar el nombre del archivo como primer argumento a np.savetxt :

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