[Python] Wie man mit inf und NaN bei numpy Durchschnitt, Standardabweichung, Maximum / Minimum umgeht

Probleme, die aufgetreten sind

Zur Ausgabe von Bildverarbeitungssoftware (Bildauswertung) mit numpy in python3, Inf und NaN sind im Mittelwert, in der Standardabweichung, im Maximum und im Minimum enthalten.

sample_code.py


import numpy as np
img = #Irgendwie eine Reihe von Bildern

print(np.max(img))
print(np.min(img))
print(np.mean(img))
print(np.std(img))

>inf
>-inf
>NaN
>NaN

So was Ich war ziemlich süchtig danach

Was sind inf und NaN?

Was ist inf oder NaN **? (Gekiuma Gaku) Als ich es nachgeschlagen habe, kamen viele Informationen heraus. inf Abkürzung für unendlich. Repräsentiert die Unendlichkeit. -inf ist negative Unendlichkeit, nicht wahr?

NaN

Gleitkommazahlen haben eine spezielle Zahl namens NaN (Not a Number), die anomale reelle Werte darstellt. Dies geschieht, wenn Sie unbestimmte Formen wie unendlich-unendlich, 0,0 / 0,0, Quadratwurzeln negativer Zahlen und logarithmische negative Zahlen ausführen, die nicht durch reelle Zahlen dargestellt werden können.

Aus NaN Story

Nach meinem Verständnis werden Werte (Zahlen) erkannt, die Sie bei der Berechnung nicht berücksichtigen oder ausschließen möchten.

Gegenmaßnahme

1. Ersetzen Sie inf durch NaN

sample_code.py


import numpy as np
img = #Irgendwie eine Reihe von Bildern

img[img == -np.inf] = np.nan
img[img == np.inf] = np.nan

Jetzt verschwindet inf aus dem Array. Lass uns weitermachen

2. Verwenden Sie eine Funktion, die NaN berücksichtigt

sample_code.py


import numpy as np
img = #Irgendwie eine Reihe von Bildern

img[img == -np.inf] = np.nan
img[img == np.inf] = np.nan

Minimum,maximal= np.nanmax(img), np.nanmin(img)
durchschnittlich= np.nanmean(img)
Standardabweichung= np.nanstd(img)

#Es gibt auch Summen und Abweichungen

Referenz: https://note.nkmk.me/python-numpy-nansum/

3. Geschichte, um das Verständnis zu vertiefen

Ich spreche darüber, welche Art von Verarbeitung dies durchgeführt wird. ** Bei der Berechnung von Maximum und Durchschnitt ** das NaN-Element ausschließen **. Bei der Durchschnittsberechnung ist sie beispielsweise nicht im Gesamtwert des Ganzen oder in der Anzahl der Elemente enthalten.

Ein Bild, das NaN aus der Sequenz löscht. Dann denken Sie vielleicht, dass Sie es löschen sollten, aber das ist bei der Bildverarbeitung nicht der Fall. Wenn Sie es löschen, entspricht es der vertikalen und horizontalen Größe des Bildes.

Wenn Sie vorerst durch 0 oder durch 0 teilen, werden vorerst inf und NaN eingeschlossen Ist es ein Gefühl, dass Software, die eine solche Verarbeitung durchführt, grundsätzlich die oben genannte Verarbeitung durchführen sollte?

Nachwort

Es war ziemlich schwer, das zu bemerken. Ich automatisiere oft die Bildverarbeitungsarbeit, die ich mit [imageJ] mache (https://imagej.nih.gov/ij/). Ich habe festgestellt, dass das Ausgabeergebnis der Software und das von imageJ verarbeitete Ergebnis unterschiedlich waren. Ich hatte das Gefühl, dass inf ausgeschlossen werden würde. Ist es in der Welt der Bildverarbeitung vernünftig?

Recommended Posts

[Python] Wie man mit inf und NaN bei numpy Durchschnitt, Standardabweichung, Maximum / Minimum umgeht
Umgang mit Japanisch mit Python
Verwendung ist und == in Python
So generieren Sie eine Sequenz in Python und C ++
So geben Sie "Ketsumaimo" standardmäßig in Python aus
Wie man mit dem Datum / Uhrzeit-Typ in Pythons SQLite3 umgeht
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
Berechnung der Standardabweichung und des Korrelationskoeffizienten in Python
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
Berechnen Sie den Mittelwert, den Median, die häufigste Varianz und die Standardabweichung in Python
Umgang mit JSON in Ruby, Python, JavaScript, PHP
So debuggen Sie eine Standard-Python-Bibliothek in Visual Studio
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
Um zwischen Standard-Python, Numpy, Pandas hin und her zu gehen ①
Eine Standardmethode zum Entwickeln und Verteilen von Paketen in Python
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
[Blender] Umgang mit Maus- und Tastaturereignissen in Blender-Skripten
Ausführen externer Shell-Skripte und -Befehle in Python
So melden Sie sich mit Python bei AtCoder an und senden automatisch
[Python] Wie man PCA mit Python macht
Umgang mit Sitzungen in SQLAlchemy
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
So sammeln Sie Bilder in Python
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
[ROS2] Beschreibung der Neuzuordnung und der Parameter beim Start des Python-Formats
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
So zeigen Sie Bytes in Java und Python auf die gleiche Weise an
So schreiben Sie den richtigen Shebang in Perl-, Python- und Ruby-Skripten
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
[Python] So fügen Sie eine beliebige Anzahl von Standardeingaben in die Liste ein
So setzen Sie in Python ein Leerzeichen mit halber Breite vor Buchstaben und Zahlen.
[Python] Verwendung von Liste 2 Referenz des Listenwerts, der Anzahl der Elemente, des Maximalwerts und des Minimalwerts
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
So stoppen Sie das Programm bis zu einem bestimmten Datum und einer bestimmten Uhrzeit in Python
So verpacken und verteilen Sie Python-Skripte
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Dynamisches Definieren von Variablen in Python
So installieren und verwenden Sie pandas_datareader [Python]
So machen Sie R chartr () in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
So arbeiten Sie mit BigQuery in Python
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
Umgang mit aufeinanderfolgenden Werten in MySQL
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So füllen Sie mit Python dynamisch Nullen aus
[Python] Berechnen von MAE und RMSE
Verwendung regulärer Ausdrücke in Python
So zeigen Sie Hello World in Python an
Aktienkurs und Statistik (Mittelwert, Standardabweichung)
2. Mittelwert und Standardabweichung beim neuronalen Netz!
Wie schreibe ich Ruby to_s in Python
[Python] Vorsichtsmaßnahmen beim Ermitteln der Maximal- und Minimalwerte mit einem Numpy-Array mit einer kleinen Anzahl von Elementen