#1 Le 01/07/2017, à 10:54
- paul18
[résolu] assignation sous python [débutant]
bonjour,
Venant du monde Scilab/mathlab, je me mets à python pour certains besoins ; je teste la vectorisation sous pythonde façon à porter certains de mes codes.
Une choses que je pensais simple, mais qui me bloque depuis pa mal de temps : l'assignation de certaines valeurs d'un tableau : ici je veux remplacer les "1" par "999", et ici tout est changé (???)
toto = np.eye(5,5)
print("toto avant assignation :",toto)
les_1 = np.argwhere(toto == 1)
toto[les_1] = 999
print("toto apres :",toto)
donne
('toto avant assignation :', array([[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 1.]]))
('toto apres :', array([[ 999., 999., 999., 999., 999.],
[ 999., 999., 999., 999., 999.],
[ 999., 999., 999., 999., 999.],
[ 999., 999., 999., 999., 999.],
[ 999., 999., 999., 999., 999.]]))
avec
('les_1 :', array([[0, 0],
[1, 1],
[2, 2],
[3, 3],
[4, 4]]))
pourtant je parcours la doc python ...
qu'est-ce qui n'est pas bon ?
Merci par avance
Paul
Dernière modification par paul18 (Le 02/07/2017, à 22:20)
Hors ligne
#2 Le 01/07/2017, à 11:48
- pingouinux
Re : [résolu] assignation sous python [débutant]
Bonjour,
Voici un extrait de pydoc numpy
The output of ``argwhere`` is not suitable for indexing arrays.
For this purpose use ``where(a)`` instead.
Ceci fera ce que tu veux :
les_1 = np.where(toto == 1)
Hors ligne
#3 Le 01/07/2017, à 12:29
- paul18
Re : [résolu] assignation sous python [débutant]
effectivement ça marche mieux - merci
Paul
Hors ligne