[PYTHON] Trouvez la position au-dessus du seuil avec NumPy

Rechercher un index avec une valeur> = seuil pour les données croissantes avec NumPy

Méthode

  1. argmin de "np.array <th" --Recherche triée pour "np.array> = th" --Longueur de "np.array <th" --Somme de "np.array <th" --Où se trouve "np.array> = th" --Rechercher par boucle for --Longueur de "prendre du temps"

Confirmez que le résultat est correct de 7 façons

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

la mesure

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)

Considération

c'est tout

Recommended Posts

Trouvez la position au-dessus du seuil avec NumPy
Trouvez le plus petit index qui atteint le seuil de somme cumulée avec numpy
Dessinez un beau cercle avec numpy
Trouvez la distance d'édition (distance de Levenshtein) avec python
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
Tweet la météo avec bot
Trouvez la broche inertielle et le moment d'inertie principal à partir du tenseur inertiel avec NumPy
Découvrez les dates du tournoi fou
Trouvez la valeur SHA256 avec R (avec bonus)
Rechercher le labyrinthe avec l'algorithme python A *
Afficher les marqueurs au-dessus de la bordure avec matplotlib
J'ai fait un jeu de vie avec Numpy
Lire le fichier de données de caractères avec numpy
Un modèle qui identifie la guitare avec fast.ai
[Python] Récupérez les fichiers dans le dossier avec Python
Tweet les prévisions météo avec le bot Partie 2
Trouvez la valeur de l'humeur avec python (Rike Koi)
Suivez le marqueur AR avec un servo à 2 axes
Trouvez le nombre de jours dans un mois
Enregistrer l'objet dans un fichier avec pickle
Découvrez le jour par date / heure
[Python] Trouvez la matrice de translocation en notation d'inclusion
J'ai fait un graphique de nombres aléatoires avec Numpy
Trouvez l'itinéraire le plus court avec l'algorithme de Python Dijkstra
Créez un outil de traduction avec Translate Toolkit
Dessinez un graphique avec PyQtGraph Partie 5-Augmentez l'axe Y
Transposons la matrice et multiplions les matrices par numpy.
Calculer la somme des valeurs uniques par tabulation croisée des pandas
Comment créer un sous-menu avec le plug-in [Blender]
Extraire des éléments autres qu'un index spécifique avec Numpy
Prenez des captures d'écran LCD avec Python-LEGO Mindstorms
Essayez de créer une application Todo avec le framework Django REST
Faire un point d'arrêt sur la couche c avec python
Une histoire qui a eu du mal avec l'ensemble commun HTTP_PROXY = ~
Découvrez l'emplacement des packages installés avec pip
Remplissez l'arrière-plan d'une seule couleur avec OpenCV2 + Python
Visualisez le vocabulaire caractéristique d'un document avec D3.js
Créez une carte thermique de tweet avec l'API Google Maps
Un mémo que j'ai touché au magasin de données avec python
Transition vers l'écran de mise à jour avec le Django a tag
Divisez l'ensemble de données (ndarray) en proportions arbitraires avec NumPy
Calculer le produit des matrices avec une expression de caractère?
Résolution du plus petit indice numba du monde avec Numpy & Numba
Créer une matrice avec numpy uniquement pour les colonnes dont la valeur totale des éléments des colonnes de la matrice est le X supérieur
Créez un tableau à deux dimensions en ajoutant une ligne à la fin d'un tableau vide avec numpy