Exemples de comment remplacer des éléments d'une matrice avec numpy sous python:
Remplacer les éléments d'une matrice 1D
Supposons par exemple que l'on veuille remplacer les éléments strictement plus grand que 5 par -1 de la matrice M, dans ce cas il suffit d'utiliser la syntaxe suivante M[M > 5 ] = -1, illustration:
>>> import numpy as np
>>> M = np.arange(10)
>>> M
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> M[M > 5 ] = -1
>>> M
array([ 0, 1, 2, 3, 4, 5, -1, -1, -1, -1])
Remplacer les éléments d'une matrice 2D
Autre exemple avec une matrice 2D
>>> A = np.arange(16)
>>> A
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
>>> A = A.reshape(4,4)
>>> A
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> A[A<=5]=0
>>> A
array([[ 0, 0, 0, 0],
[ 0, 0, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> A[A>1]=1
>>> A
array([[0, 0, 0, 0],
[0, 0, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]])
Utiliser plusieurs conditions
Maintenant si on veut remplacer les éléments strictement plus grand que 2 mais strictement plus petit que 7 par -1, la syntaxe est la suivante M[(M > 2) & (M < 7)] = -1, illustration:
>>> import numpy as np
>>> M = np.arange(10)
>>> M
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> M[(M > 2) & (M < 7)] = -1
>>> M
array([ 0, 1, 2, -1, -1, -1, -1, 7, 8, 9])
En utilisant la fonction numpy where
On peut aussi utiliser la fonction numpy where:
>>> A = np.array((1,7,3,8,4,9,1))
>>> np.where(A>4,1,A)
array([1, 1, 3, 1, 4, 1, 1])
Références
Liens | Site |
---|---|
Replace all elements of Python NumPy Array that are greater than some value | stackoverflow |
Replace “zero-columns” with values from a numpy array | stackoverflow |
numpy.place | numpy doc |
Numpy where function multiple conditions | stackoverflow |
Replace NaN's in NumPy array with closest non-NaN value | stackoverflow |
numpy.put | numpy doc |
numpy.nan_to_num | numpy doc |
How to: Replace values in an array | kite.com |