[PYTHON] So finden Sie den Bereich des Boronoi-Diagramms

Einführung

Ich wollte das Gebiet der Boronoi-Karte finden, aber es fiel mir schwer, den Artikel zu finden, in dem nach dem Gebiet gefragt wurde, deshalb möchte ich es als Memo aufschreiben.

Code

Ich werde den Code sofort setzen.


def voronoi_area(points):
    v = Voronoi(points)
    vol = np.zeros(v.npoints)
    for i, reg_num in enumerate(v.point_region):
        indices = v.regions[reg_num]
        if -1 in indices: 
            vol[i] = np.inf
        else:
            vol[i] = ConvexHull(v.vertices[indices]).volume
    return vol

sample_points = [[-2, 6], [ 3, -8], [ 5, 9], [ 4, 5], [-7, 2], [ 3, 4]]
voronoi_area(sample_points)
# >>> [inf, inf, inf, 205.92126984, inf, 52.62380952]

Da es einen Teil gibt, der im Bereich der Boronoi-Figur unweigerlich unendlich wird, versuche ich, ihn als np.inf auszugeben. Wenn Sie verhindern möchten, dass es unendlich wird, sollten Sie es spiegeln. Ich denke, es ist notwendig, wenn man den Bereich des Boronoi-Diagramms von Athleten findet, deshalb werde ich es unten auflisten.


def voronoi_volumes(points, x_max, y_max):
    points_len = np.shape(points)[0]
    points1 = points.copy()
    points1[:,1] = - points[:,1]
    points2 = points.copy()
    points2[:,1] = 2 * y_max - points[:,1]
    points3 = points.copy()
    points3[:,0] = - points[:,0]
    points4 = points.copy()
    points4[:,0] = 2 * x_max - points[:,0]
    points = np.concatenate((points, points1, points2, points3, points4), axis=0)
    v = Voronoi(points)
    vol = np.zeros(v.npoints)
    for i, reg_num in enumerate(v.point_region):
        indices = v.regions[reg_num]
        vol[i] = ConvexHull(v.vertices[indices]).volume
    return vol[:points_len]

Geben Sie den Maximalwert der X-Achse in x_max und den Maximalwert der Y-Achse in y_max ein.

Am Ende

Ich denke, dass das Boronoi-Diagramm häufig bei der Analyse von Sportarten verwendet wird, daher hoffe ich, dass Sie es verwenden werden.

Recommended Posts

So finden Sie den Bereich des Boronoi-Diagramms
So finden Sie die optimale Anzahl von Clustern für k-means
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Suchen Sie den Bereich des Summensatzes überlappender Rechtecke
So überprüfen Sie die Version von Django
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
So berechnen Sie die Volatilität einer Marke
Die Hand von "Millijan" durch Kombinationsoptimierung finden
So ermitteln Sie die Anzahl der CPUs ohne den Befehl sar
So finden Sie die Korrelation für kategoriale Variablen
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
So ermitteln Sie den Koeffizienten der ungefähren Kurve, die in Python durch die Scheitelpunkte verläuft
Wie man die Portnummer des xinetd-Dienstes kennt
So ermitteln Sie die Anzahl der Stellen in Python
Die Entscheidung von scikit-learn Wie man ein Holzmodell visualisiert
[Blender] So legen Sie die Auswahlelemente von EnumProperty dynamisch fest
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
Wie man das Dokument der magischen Funktion (Linienmagie) trifft
So greifen Sie auf die globale Variable des importierten Moduls zu
[Selen] Wie wird der relative Pfad des Chromedriver angegeben?
Verwendung des Generators
Wie man Maharanobis Entfernung findet
Wie benutzt man den Dekorateur?
So erhöhen Sie die Achse
So starten Sie die erste Projektion
Ich habe versucht, die Entropie des Bildes mit Python zu finden
So erhöhen Sie die Verarbeitungsgeschwindigkeit der Erfassung der Scheitelpunktposition
[Ubuntu] So löschen Sie den gesamten Inhalt des Verzeichnisses
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
So testen Sie die Attribute, die durch add_request_method of pyramid hinzugefügt wurden
Erben Sie die Standardbibliothek, um den Durchschnittswert der Warteschlange zu ermitteln
Berechnen des aus ABC134-D gelernten Rechenaufwands
(Hinweis) So übergeben Sie den Pfad Ihres eigenen Moduls
Wie man die Ergebnisse von FreeSurfer ~ aparc, aseg, wmparc ~ zusammenfasst
So führen Sie die Exportfunktion des GCP-Datenspeichers automatisch aus
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
So sehen Sie den Inhalt der ipynb-Datei des Jupyter-Notizbuchs
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
So ermitteln Sie die durchschnittliche Informationsmenge (Entropie) der ursprünglichen Wahrscheinlichkeitsverteilung aus der Stichprobe
Finden Sie die Definition des Wertes von errno
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
Zusammenfassung der Verwendung von pandas.DataFrame.loc
Zusammenfassung der Verwendung von pyenv-virtualenv
Lesen des SNLI-Datensatzes
So erhalten Sie die Python-Version
So überschreiben Sie die Ausgabe auf die Konsole
Zusammenfassung der Verwendung von csvkit
Verwendung des ConfigParser-Moduls
Ergänzung zur Erklärung von vscode
So bestimmen Sie die Existenz eines Selenelements in Python
So ändern Sie die Protokollstufe von Azure SDK für Python
So implementieren Sie Java-Code im Hintergrund von Red Hat (Linux ONE)
Wie Sie die interne Struktur eines Objekts in Python kennen
So ändern Sie die Farbe nur der mit Tkinter gedrückten Taste
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
So überprüfen Sie die Speichergröße einer Variablen in Python
Erstellen Sie das Thema von Pythonista 3 wie Monokai (wie Sie Ihr eigenes Thema erstellen)