Szukałem online i nie mogłem znaleźć nic na ten temat, co robi to, co chcę.
Chciałbym zapisać tablicę numpy jako obraz, ale zamiast mieć kolorowy obraz, chcę czarno-białą reprezentację wartości pikseli w odpowiadającej im lokalizacji siatki.
Na przykład:
import numpy as np
x = np.array([[1,2],[3,4]])
print(x)
# [[1 2]
# [3 4]]
Chciałbym zapisać to jako obraz (.PNG), który wygląda następująco:
Mój obecny kod tworzy siatkę i umieszcza liczby w środku, ale bardzo trudno jest dostosować wszystko, aby było prezentowalne w pracy badawczej.
Zamiast więc publikować mój zbyt skomplikowany kod, zastanawiałem się, czy istnieje wbudowana funkcja do obsługi tego w kilku wierszach kodu.
table
że byłby to dobry początek. Nie wykorzystałem go wystarczająco, aby dać dobrą odpowiedź.table
.Odpowiedzi:
Użyłbym LaTeXa do wygenerowania tabel, ponieważ wyglądają fantazyjnie i możesz albo wygenerować obraz, albo bezpośrednio umieścić je w swoim dokumencie. Aby to osiągnąć, użyłem następującego kodu:
W tym przypadku
preview
używana jest klasa dokumentu, która zwraca obraz o zmienionym rozmiarze do zawartości dokumentu, tj. Tylko tabeli. Dotabular
prezentacji danych używane jest tylko środowisko. Pomiędzy komórkami znajdują się poziome i pionowe paski, ale bardzo łatwo to zmienić. W zmiennejtab
dane są przetwarzane dla każdego wiersza i konwertowane na ciąg. Pamiętaj, że musisz określić format wyjściowy w tej pozycji. Ustawiłem na%d
tak, aby wszystko było konwertowane na liczby całkowite.Jeśli chcesz używać tabeli bezpośrednio w źródle lateksu, musisz usunąć,
documentclass
a\begin{document}
także\end{document}
w zmiennychstart
iend
. Na koniec wszystko składa się w źródło lateksu, które jest następnie przechowywane na dysku jakotable.tex
. Jeśli chcesz tylko obraz na końcu, plik wynikowy zostanie skompilowanytable.pdf
.Oto jak wygląda wyjście. Ale tak jak powiedziałem, bardzo łatwo jest zmienić wygląd, ponieważ jest to LaTeX :)
Oto kolejny przykład z dużą matrycą (14 x 14), wypełnioną losowymi liczbami od 0 do 100:
źródło
Możesz użyć
table
funkcjimatplot
do wykreślenia prostej tabeli. Ponadto możesz zapisać wykres jako PNG. Poniżej znajduje się prosty kod dla twoich wymagań:Rozmiar działki lub obrazu można dostosować, zmieniając
figsize
parametry w wierszu:plt.figure(figsize=(x,y))
Dla lepszego wyglądu można go zmodyfikować jak poniżej:
źródło
fig = plt.figure(figsize = x.shape)
Może to pomoże:
źródło