Vorrei usare LaTeX per generare le tabelle, poiché sembrano fantasiose e puoi generare un'immagine o inserirle direttamente nel tuo documento. Ho usato il seguente codice per raggiungere questo obiettivo:
#!/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")
Qui previewviene utilizzata la classe del documento che restituisce un'immagine ridimensionata al contenuto del documento, ovvero solo la tabella. Solo un tabularambiente viene utilizzato per presentare i dati. Ci sono barre orizzontali e verticali tra le celle, ma è molto facile cambiarlo. Nella variabile tabi dati vengono elaborati per ogni riga e convertiti in una stringa. Si noti che è necessario specificare il formato di output in questa posizione. L'ho impostato su %dcosì tutto viene convertito in numeri interi.
Se si desidera utilizzare la tabella direttamente in una fonte in lattice, è necessario rimuovere documentclasse \begin{document}nonché \end{document}le variabili di starte end. Infine, tutto viene messo insieme in una sorgente in lattice che viene quindi archiviata su disco come table.tex. Se vuoi solo l'immagine alla fine, il file risultante viene compilato in table.pdf.
Ecco come appare l'output. Ma come ho detto, è molto facile cambiare l'aspetto dato che è LaTeX :)

Ecco un altro esempio con una matrice grande (14 x 14), piena di numeri casuali che vanno da 0 a 100:

tablesarebbe un buon punto di partenza. Non l'ho usato abbastanza per dare una buona risposta.