Partage
  • Partager sur Facebook
  • Partager sur Twitter

Remplacer des objets dans un tableau numpy

    19 février 2016 à 18:50:35

    Bonsoir, 

    Imaginons que je dispose d'un tableau numpy sous Python, composé d'entiers naturels.

    J'aimerais savoir s'il existe une commande pour remplacer tous les 8 (par exemple, ou n'importe quel autre entier) par un autre nombre. 

    Merci !

    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2016 à 19:09:16

      Faudra chercher dans la doc car je suppose qu'on peut faire plus de choses, mais je me suis souvenu de cette syntaxe:

      import numpy as np
      
      arr = np.array([[1, 2, 3], [4, 3, 2], [5, 2, 3]])
      
      #Et pour changer la valeur
      arr[arr == 3] = 8
      
      print(arr)



      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        19 février 2016 à 19:17:46

        Pour compléter mon précédent post, il me semble que les array acceptent 2 types d'indexation (peut-être plus):

        • La première, classique en python avec les entiers
        • La seconde est un array de même taille contenant des valeurs bouléennes

        Donc en analysant mon code, en fait on a:

        arr == 3
        
        #Et ça renvoie
        array([[False, False,  True],
               [False,  True, False],
               [False, False,  True]], dtype=bool)


        Et c'est cet objet qu'on met en index. Et oui, il ne faut pas oublier que numpy fait une boucle implicite optimisée. Ainsi:

        #ON NE FAIT PAS
        for vect in arr:
            for elt in vect:
                 elt < 4
        
        #MAIS SIMPLEMENT
        arr < 4  #boucle implicite



        • Partager sur Facebook
        • Partager sur Twitter
        Précepte: Le mieux est l'ennemi du bien
          19 février 2016 à 19:45:40

          Parfait ! Merci beaucoup en tout cas !
          • Partager sur Facebook
          • Partager sur Twitter

          Remplacer des objets dans un tableau numpy

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown