[PYTHON] Erstellen Sie bin mit NumPy, erhalten Sie die Korrespondenz zwischen Daten und bin

Wenn Sie beim Aufteilen der Daten in Bins und Zeichnen des Histogramms usw. ein Array an hist () von matplotlib übergeben, werden die Bins in Bins unterteilt, die entsprechend den Daten gut aussehen und gezeichnet werden. Die Daten werden jedoch in beliebige Bins unterteilt. Möglicherweise möchten Sie wissen, welche Daten sich in welchem Fach befinden.

Dieses Mal erstellen wir einen Bin und erhalten die Korrespondenz zwischen Daten und Bin.

Eine Distribution erstellen

Erstellen Sie zunächst ein Array mit einer geeigneten Verteilung.

import numpy

n = 100
dist = numpy.random.normal(0, 1, n)

Bin erstellen

Es scheint eine Debatte über die Gültigkeit der Anzahl der Fächer zu geben, aber in Microsoft Excel usw. scheint die Anzahl der Fächer k die quadratische Anzahl von n für die Anzahl der Daten n als Standard zu sein.

k=\sqrt{n}

Dieses Mal werden wir diese Methode verwenden, um die Anzahl der Bins zu bestimmen und ein Array als Bins zu erstellen, das den Datenbereich in k unterteilt.

import math

bin_num = math.sqrt(n)
bins = numpy.linspace(min(dist), max(dist), bin_num)

Ein Array ähnlich dem folgenden wurde erstellt.

[-2.28875045 -1.72785426 -1.16695807 -0.60606188 -0.0451657   0.51573049 1.07662668  1.63752287  2.19841906  2.75931524]

Bestätigung

Mal sehen, wie die Daten mit dem erstellten Bin gezeichnet werden.

import matplotlib.pyplot as plt

plt.hist(dist, bins=bins) 
plt.show()

binning.png

Holen Sie sich die Korrespondenz zwischen Daten und Behältern

Mit numpy.digitize () können Sie eine Liste der Bin-Standortinformationen abrufen, die den Daten entsprechen.

bin_indice = numpy.digitize(dist, bins)

Im folgenden Ergebnis entspricht dist [0] dem 4. Bin und dist [1] dem 5. Bin.

[ 4  5  8  6  4  6  8  1  6  6  8  2  6  3  5  4  5  4  5  3  8  2  5  5  4 4  4  4  2  3  5  6  5  3  4  3  7  6  4  3  4  4  8  2  4  4  8  6  6  3 6  2  9  5  5  4  4  1  8  6  5  5  5  5  4  1 10  3  1  8  7  3  4  3  8 2  6  5  6  3  6  7  5  3  3  5  5  5  4  1  3  6  5  6  7  3  4  7  8  4]

Ich werde versuchen, es mit zip () zu befestigen.

bin_data_map = zip(dist, bin_indice)
[(-0.16840296791127732, 4), (0.43715458127052381, 5), (1.8635306330264274, 8), (0.89273121368100206, 6),...

Recommended Posts

Erstellen Sie bin mit NumPy, erhalten Sie die Korrespondenz zwischen Daten und bin
[Python] Strukturiertes Array erstellen (heterogene Daten mit NumPy speichern)
Gleitender Durchschnitt mit Numpy
Erstelle Spiele mit Pygame
Erstellen Sie einen Filter mit scipy
Beginnen Sie mit MicroPython
Holen Sie sich Tweets mit Tweepy
Holen Sie sich ein Date mit Python
Erste Schritte mit Numpy
Beginnen Sie mit Mezzanine
Lernen Sie mit Chemo Informatics NumPy
Verkettung von Matrizen mit Numpy
Summencode mit Numpy
Führen Sie eine Regressionsanalyse mit NumPy durch
Erweitern Sie NumPy mit Rust
Lassen Sie uns ein PRML-Diagramm mit Python, Numpy und matplotlib erstellen.