Définir les éléments du tableau numpy à zéro s'ils sont au-dessus d'un seuil spécifique

Dire, j'ai un tableau numpy se compose de 10 éléments, par exemple:

a = np.array([2, 23, 15, 7, 9, 11, 17, 19, 5, 3])

Maintenant, je veux efficacement l'ensemble de tous les a des valeurs supérieures à 10 à 0donc je vais l'obtenir:

[2, 0, 0, 7, 9, 0, 0, 0, 5, 3]

Parce que j'utilise actuellement un for boucle, qui est très lente:

# Zero values below "threshold value".
def flat_values(sig, tv):
    """
    :param sig: signal.
    :param tv: threshold value.
    :return:
    """
    for i in np.arange(np.size(sig)):
        if sig[i] < tv:
            sig[i] = 0
    return sig

Comment puis-je réaliser que dans la manière la plus efficace, en tenant compte de grands tableaux de, disons, 10^6 éléments?

source d'informationauteur bluevoxel