Supprimer des éléments de tableau en Python tout en gardant une trace de leur position

StackOverflow https://stackoverflow.com/questions/1624395

  •  06-07-2019
  •  | 
  •  

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!

Était-ce utile?

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])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top