Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/07/2017, à 11: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, à 23:20)

Hors ligne

#2 Le 01/07/2017, à 12: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, à 13:29

paul18

Re : [résolu] assignation sous python [débutant]

effectivement ça marche mieux - merci

Paul

Hors ligne