-1
votes

Supprimer les éléments de la matrice numpy inférieure à 1

J'essaie de tracer des données importantes (50 millions de valeurs), mais je reçois un MemoryError . Maintenant, j'essaie de dégager mon jeu de données des valeurs redondantes. Dans mon cas, ce sont toutes des valeurs ci-dessous 1 et ci-dessus -1 . Une chose à garder à l'esprit est que l'intrigue devrait ressembler la même chose que l'original, mais sans le bruit. Existe-t-il un meilleur moyen de le faire que d'utiliser boucles ou compréhensions de liste ?

Terrain original:

 Entrez la description de l'image ici

EDIT:

Merci pour les réponses. Si j'utilise l'approche proposée: xxx

Il en résulte:

 Entrez la description de l'image ici


1 commentaires

S'il vous plaît partager quelques échantillons de données ou numpy.array pour reproduire le problème


3 Réponses :


4
votes

Si votre tableau est nommé DATA CODE>:

clipped_data = data[(-1 > data) | (data > 1)]


0 commentaires

0
votes

Numpy peut faire l'adressage basé sur une gamme de booléens. Vous pouvez donc faire des choses comme ceci, si vous souhaitez définir les valeurs indésirables sur 0:

badIndices = (myArray > 1) | (myArray < -1)
myArray[badIndices]=0


0 commentaires

0
votes

Numpy Vous permet d'appliquer un masque à une seule dimension d'un tableau, ce qui entraîne un sous-ensemble des lignes non masquées (ou des points de données dans votre cas).

data = np.array([1.5, 0.2, -5, -0.5])
mask = np.abs(data) > 1
data = data[mask]
print(data) # output: [1.5, -5]


0 commentaires