Supprimer des éléments de tableau en Python tout en gardant une trace de leur position
Question
J'ai deux tableaux numpy. Le premier tableau contient des zéros (qui sont répartis de manière aléatoire sur toute la longueur du tableau), que je voudrais supprimer.
Mon problème est que je voudrais aussi supprimer les entrées du deuxième tableau aux positions d'index où les premiers éléments du tableau sont nuls.
Je suis seulement venu avec un très lourd enchaînement. Quelqu'un at-il un "élégant"? méthode pour le faire?
Thx!
La solution
Est-ce ce que vous voulez? Je suis un débutant NumPy.
In [1]: import numpy as np
In [2]: a = np.array([1,2,0,3,0,4])
In [3]: b = np.array([1,2,3,4,5,6])
In [4]: b[np.where(a)]
Out[4]: array([1, 2, 4, 6])
In [5]: np.where(a)
Out[5]: (array([0, 1, 3, 5]),)
In [6]: a[np.where(a)]
Out[6]: array([1, 2, 3, 4])
Autres conseils
Vous pouvez utiliser l'indexation booléenne. x! = 0 vous donne un tableau booléen avec True où x! = 0 faux où x == 0. Si vous indexez soit x, soit y avec ce tableau (c'est-à-dire x_nozeros = x [x! = 0]), vous n'obtiendrez que les éléments où x! = 0. par exemple:
In [1]: import numpy as np
In [2]: x = np.array([1,2,0,3,0,4])
In [3]: y = np.arange(1,7)
In [4]: indx = x!=0
In [5]: x_nozeros = x[indx]
In [6]: y_nozeros = y[indx]
In [7]: x_nozeros
Out[7]: array([1, 2, 3, 4])
In [8]: y_nozeros
Out[8]: array([1, 2, 4, 6])