Avec Numpy il existe plusieurs façons de supprimer une ou plusieurs lignes d'une matrice. Le plus simple est d'utiliser la fonction delete, illustration:
>>> import numpy as np
>>> Mi = np.array([[1, 2, 3], [4, 100, 6], [100,1,2], [12, 100, 50]])
>>> print Mi
[[ 1 2 3]
[ 4 100 6]
[100 1 2]
[ 12 100 50]]
>>> print Mi.shape
(4, 3)
>>> M = np.delete(Mi, (2), axis=0)
>>> print M
[[ 1 2 3]
[ 4 100 6]
[ 12 100 50]]
>>> print M.shape
(3, 3)
dans cet exemple la fonction "delete(Mi, (2), axis=0)" a supprimée la troisième ligne de la matrice initiale Mi (Rappel: il s'agit bien de la troisième ligne (2)+1 car sous python par défaut les indices commence à 0).
Cependant il arrive que l'on souhaite supprimer des lignes sous certaines conditions. Imaginons par exemple que l'on veuille supprimer toutes les lignes de la matrice Mi ou les éléments sont plus grand que 30 dans la deuxième colonne. Dans ce cas la syntaxe est la suivante:
>>> import numpy as np
>>> Mi = np.array([[1, 2, 3], [4, 100, 6], [100,1,2], [12, 100, 50]])
>>> print Mi
[[ 1 2 3]
[ 4 100 6]
[100 1 2]
[ 12 100 50]]
>>> print Mi.shape
(4, 3)
>>> M = Mi[~(Mi[:,1] > 30)]
>>> print M
[[ 1 2 3]
[100 1 2]]
>>> print M.shape
(2, 3)
>>>
Dans l'exemple ci-dessus deux lignes on été supprimées: les lignes 2 et 4 de la matrice Mi car 100 > 30 dans la deuxième colonne des lignes 2 et 4.
Recherches associées
Liens | Site |
---|---|
numpy.delete | scipy doc |
Python delete row in numpy array | stackoverflow |
deleting rows in numpy array | stackoverflow |
How do I delete a row in a numpy array which contains a zero? | stackoverflow |