[PYTHON] Finden Sie mit NumPy die Position über dem Schwellenwert

Suchen Sie mit NumPy den Index mit dem Wert> = Schwellenwert für aufsteigende Daten

Methode

  1. argmin von "np.array <th" --Sortiert nach "np.array> = th"

Bestätigen Sie, dass das Ergebnis auf sieben Arten korrekt ist

python


import numpy as np
from more_itertools import ilen
from itertools import takewhile

def find_index(a, ths):
    for i,v in enumerate(a):
        if v >= th:
            break
    return i

n = 10000000
x = np.arange(n)
th = n / 10
print((x < th).argmin())
print(np.searchsorted(x, th))
print(len(x[x < th]))
print((x < th).sum())
print(np.where(x>=th)[0][0])
print(find_index(x, th))
print(ilen(takewhile(lambda i: i < th, x)))
>>>
1000000
1000000
1000000
1000000
1000000
1000000
1000000

Messung

python


%timeit np.searchsorted(x, th)
%timeit (x < th).argmin()
%timeit len(x[x < th])
%timeit (x < th).sum()
%timeit np.where(x >= th)[0][0]
%timeit find_index(x, th)
%timeit ilen(takewhile(lambda i: i < th, x))
>>>
3.84 µs ± 347 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
10.2 ms ± 215 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
12.5 ms ± 62.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
21.2 ms ± 411 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
43.1 ms ± 635 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
3.36 µs ± 19.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
5.74 µs ± 75.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

python


th = 10
%timeit np.searchsorted(x, th)
%timeit (x < th).argmin()
%timeit len(x[x < th])
%timeit (x < th).sum()
%timeit np.where(x >= th)[0][0]
%timeit find_index(x, th)
%timeit ilen(takewhile(lambda i: i < th, x))
>>>
3.31 µs ± 24.8 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
9.86 ms ± 28.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
13.1 ms ± 530 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
21.7 ms ± 761 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
46.9 ms ± 1.8 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
3.76 µs ± 310 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
6.01 µs ± 231 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

Erwägung

--suche sortiert ist gut --Wenn argmin und for loop, muss es nicht sortiert werden

das ist alles

Recommended Posts

Finden Sie mit NumPy die Position über dem Schwellenwert
Suchen Sie mit numpy den kleinsten Index, der den kumulativen Summenschwellenwert erfüllt
Zeichne einen schönen Kreis mit Numpy
Finden Sie die Bearbeitungsentfernung (Levenshtein-Entfernung) mit Python
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
Tweet die Wettervorhersage mit Bot
Ermitteln Sie mit NumPy die Trägheitsspindel und das Hauptträgheitsmoment aus dem Trägheitstensor
Finde die Daten des verrückten Turniers heraus
Finden Sie den SHA256-Wert mit R (mit Bonus)
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Zeigen Sie Markierungen über dem Rand mit matplotlib an
Ich habe ein Lebensspiel mit Numpy gemacht
Zeichendatendatei mit numpy lesen
Ein Modell, das die Gitarre mit fast.ai identifiziert
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Tweet die Wettervorhersage mit Bot Teil 2
Finden Sie den Stimmungswert mit Python (Rike Koi)
Folgen Sie der AR-Markierung mit einem 2-Achsen-Servo
Finden Sie die Anzahl der Tage in einem Monat
Speichern Sie das Objekt in einer Datei mit pickle
Finden Sie den Tag nach Datum / Uhrzeit heraus
[Python] Finden Sie die Translokationsmatrix in Einschlussnotation
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Finden Sie den kürzesten Weg mit dem Python Dijkstra-Algorithmus
Erstellen Sie ein Übersetzungswerkzeug mit dem Translate Toolkit
Zeichnen Sie mit PyQtGraph Teil 5 ein Diagramm. Erhöhen Sie die Y-Achse
Lassen Sie uns die Matrix transponieren und die Matrizen mit numpy multiplizieren.
Berechnen Sie die Summe der eindeutigen Werte durch Pandas-Kreuztabellen
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Extrahieren Sie andere Elemente als einen bestimmten Index mit Numpy
Machen Sie LCD-Screenshots mit Python-LEGO Mindstorms
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Die Geschichte, eine harte Zeit mit der gemeinsamen Menge HTTP_PROXY = ~ zu haben
Finden Sie den Speicherort der mit pip installierten Pakete heraus
Füllen Sie den Hintergrund mit einer einzigen Farbe mit OpenCV2 + Python
Visualisieren Sie das charakteristische Vokabular eines Dokuments mit D3.js.
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
Übergang zum Update-Bildschirm mit dem Django-Tag
Teilen Sie den Datensatz (ndarray) mit NumPy in beliebige Proportionen
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
Der kleinste Hinweis der Welt wurde mit numpy & numba gelöst
Erstellen Sie eine Matrix mit numpy nur für Spalten, deren Gesamtwert der Elemente der Spalten der Matrix das oberste X ist
Erstellen Sie ein zweidimensionales Array, indem Sie am Ende eines leeren Arrays mit numpy eine Zeile hinzufügen