Eu pesquisei online e não consegui encontrar nada sobre isso que faça o que eu quero.
Gostaria de salvar uma matriz numpy como uma imagem, mas em vez de ter uma imagem colorida, quero uma representação em preto e branco dos valores de pixel no local da grade correspondente.
Por exemplo:
import numpy as np
x = np.array([[1,2],[3,4]])
print(x)
# [[1 2]
# [3 4]]
Gostaria de salvar isso como uma imagem (.PNG) parecida com a seguinte:
Meu código atual cria uma grade e coloca os números dentro, mas é muito difícil ajustar tudo para torná-lo apresentável em um trabalho de pesquisa.
Então, em vez de postar meu código excessivamente complexo, fiquei pensando se há uma função integrada para lidar com isso em algumas linhas de código.
table
seria um bom lugar para começar. Não usei o suficiente para dar uma boa resposta.table
.Respostas:
Eu usaria o LaTeX para gerar as tabelas, uma vez que elas parecem elegantes e você pode gerar uma imagem ou colocá-las diretamente em seu documento. Eu usei o seguinte código para conseguir isso:
Aqui,
preview
é usada a classe de documento que retorna uma imagem redimensionada para o conteúdo do documento, ou seja, apenas a tabela. Somente umtabular
ambiente é usado para apresentar os dados. Existem barras horizontais e verticais entre as células, mas é muito fácil mudar isso. Na variável,tab
os dados são processados para cada linha e convertidos em uma sequência. Observe que você precisa especificar o formato de saída nesta posição. Eu configurei para%d
que tudo seja convertido em números inteiros.Se você deseja usar a tabela diretamente em uma fonte de látex, é necessário remover
documentclass
e\begin{document}
também\end{document}
as variáveis destart
eend
. Finalmente, tudo é reunido em uma fonte de látex que é então armazenada no disco comotable.tex
. Se você deseja apenas a imagem no final, o arquivo resultante é compilado paratable.pdf
.Aqui está a aparência da saída. Mas como eu disse, é muito fácil mudar a aparência, pois é o LaTeX :)
Aqui está outro exemplo com uma matriz grande (14 x 14), preenchida com números aleatórios que variam de 0 a 100:
fonte
Você pode usar a
table
função dematplot
para plotar a tabela simples. Além disso, você pode salvar o gráfico como PNG. Abaixo está o código simples para seus requisitos:O tamanho da plotagem ou imagem pode ser ajustado alterando os
figsize
parâmetros na linha:plt.figure(figsize=(x,y))
Para uma melhor aparência, pode ser modificado como abaixo:
fonte
fig = plt.figure(figsize = x.shape)
Pode ser que isso ajude:
fonte