Existe uma maneira de despejar uma matriz NumPy em um arquivo CSV? Eu tenho uma matriz NumPy 2D e preciso despejá-la em formato legível por humanos.
545
numpy.savetxt
salva uma matriz em um arquivo de texto.
import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")
numpy.array
de strings. Você poderia prescrever um método para salvar como csv para umnumpy.array
objeto contendo seqüências de caracteres?fmt='%s'
Você pode usar
pandas
. É preciso alguma memória extra, portanto nem sempre é possível, mas é muito rápido e fácil de usar.se você não quiser um cabeçalho ou índice, use
to_csv("/path/to/file.csv", header=None, index=None)
fonte
df.to_csv("file_path.csv", header=None)
header=None, index=None
removem a linha do cabeçalho e a coluna do índice.comments
argumento da palavra - chave como''
, o#
será suprimido.tofile
é uma função conveniente para fazer isso:A página do manual tem algumas notas úteis:
Nota. Esta função não produz arquivos CSV de várias linhas, salva tudo em uma linha.
fonte
Escrever matrizes de registro como arquivos CSV com cabeçalhos requer um pouco mais de trabalho.
Este exemplo lê um arquivo CSV com o cabeçalho na primeira linha e depois grava o mesmo arquivo.
Observe que este exemplo não considera seqüências de caracteres com vírgulas. Para considerar cotações para dados não numéricos, use o
csv
pacote:fonte
Como já discutido, a melhor maneira de despejar a matriz em um arquivo CSV é usando
.savetxt(...)
método No entanto, há certas coisas que devemos saber para fazê-lo corretamente.Por exemplo, se você tiver uma matriz numpy com
dtype = np.int32
oe deseja salvar usando
savetxt
comoEle armazenará os dados no formato exponencial de ponto flutuante como
Você precisará alterar a formatação usando um parâmetro chamado
fmt
comopara armazenar dados em seu formato original
Salvando dados no formato compactado gz
Além disso,
savetxt
pode ser usado para armazenar dados em.gz
formato compactado, o que pode ser útil durante a transferência de dados pela rede.Só precisamos alterar a extensão do arquivo, pois o
.gz
numpy cuidará de tudo automaticamenteEspero que ajude
fonte
fmt="%d"
era o que eu estava procurando. Obrigado!Acredito que você também pode fazer isso da seguinte maneira:
por exemplo, nº 1:
por exemplo, nº 2:
fonte
se você deseja escrever na coluna:
Aqui 'a' é o nome da matriz numpy e 'file' é a variável a ser gravada em um arquivo.
Se você deseja escrever em linha:
fonte
Se você quiser salvar seu array numpy (por exemplo
your_array = np.array([[1,2],[3,4]])
) em uma célula, poderá convertê-lo primeiro comyour_array.tolist()
.Em seguida, salve-o da maneira normal em uma célula, com
delimiter=';'
e a célula no arquivo csv ficará assim[[1, 2], [2, 4]]
Então você pode restaurar sua matriz assim:
your_array = np.array(ast.literal_eval(cell_string))
fonte
Você também pode fazer isso com python puro sem usar nenhum módulo.
fonte
No Python, usamos o módulo csv.writer () para gravar dados em arquivos csv. Este módulo é semelhante ao módulo csv.reader ().
Um delimitador é uma sequência usada para separar campos. O valor padrão é vírgula (,).
fonte