Ich würde LaTeX verwenden, um die Tabellen zu generieren, da sie schick aussehen und Sie entweder ein Bild generieren oder sie direkt in Ihr Dokument einfügen können. Ich habe den folgenden Code verwendet, um dies zu erreichen:
#!/usr/bin/env
import numpy as np
import os
x = np.array([[1,2],[3,4]])
def generateLatexTable(x):
start = [r'\documentclass[preview]{standalone}', r'\begin{document}', r'\begin{tabular}{%s}' % ('{1}{0}{1}'.format('|'.join(['r'] * x.shape[1]), '|')), r'\hline']
tab = [' & '.join(['%d' % val for val in row]) + r' \\ \hline' for row in x]
end = [r'\end{tabular}', r'\end{document}']
text = '\n'.join(start + tab + end)
return text
with open('table.tex', 'w') as f:
f.write(generateLatexTable(x))
os.system("pdflatex table.tex")
Hier wird die Dokumentklasse preview
verwendet, die ein Bild zurückgibt, dessen Größe an den Inhalt des Dokuments angepasst ist, dh nur an die Tabelle. Zur tabular
Darstellung der Daten wird nur eine Umgebung verwendet. Es gibt horizontale und vertikale Balken zwischen den Zellen, aber es ist sehr einfach, dies zu ändern. In der Variablen werden tab
die Daten für jede Zeile verarbeitet und in eine Zeichenfolge konvertiert. Beachten Sie, dass Sie das Ausgabeformat an dieser Position angeben müssen. Ich habe es %d
so eingestellt, dass alles in ganze Zahlen umgewandelt wird.
Wenn Sie die Tabelle direkt in einer Latexquelle verwenden möchten, müssen Sie documentclass
und \begin{document}
sowie \end{document}
die Variablen von start
und entfernen end
. Schließlich wird alles in einer Latexquelle zusammengefasst, die dann als auf der Festplatte gespeichert wird table.tex
. Wenn Sie nur das Bild am Ende haben möchten, wird die resultierende Datei zu kompiliert table.pdf
.
So sieht die Ausgabe aus. Aber wie gesagt, es ist sehr einfach, das Aussehen zu ändern, da es LaTeX ist :)
Hier ist ein weiteres Beispiel mit einer großen Matrix (14 x 14), die mit Zufallszahlen zwischen 0 und 100 gefüllt ist:
table
wäre es ein guter Anfang. Ich habe es nicht genug benutzt, um eine gute Antwort zu geben.