Partage
  • Partager sur Facebook
  • Partager sur Twitter

Matrice

    30 janvier 2011 à 16:21:51

    Bonjour, je commence mon cours d'algorithmique numérique et on travaille avec python que je ne connais pas du tout pour le moment.
    Je dois créer une matrice n,n dans laquelle chaque ligne va de 1 à n.
    Voici mon code (ça va sembler tres brouillon étant donné que je ne sais pas très bien ce que je fais :/)
    #Fonctionc créant la matrice:
    Def makematrix(n):
       neo=np.zeros([n,n]);
       for i in np.arrange(0,n):
           for j in np.arrange(0,n):
               neo[i,j]=j+1;
    

    Mais ça ne marche pas, quelqu'un pourrait il m'expliquer ? merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      30 janvier 2011 à 19:26:31

      Salut,
      A mon avis commence déjà par voir la syntaxe de Python, parce-que là ça risque de pas de marcher.
      Sinon pour créer une matrice de <math>\(n\times n\)</math> avec <math>\(1,2,\cdots, n\)</math> sur chaque ligne, il suffit de faire :
      Début fonction:
        créer liste
        Pour i de 1 à n :
           ajouter ligne i à liste
           Pour j de 1 à n:
             ajouter j à ligne i
        retourner liste

      donc en Python (3.x, mais c'est presque pareil pour les autres versions):
      def make_matrix(n):
        m = []
        for i in range(n):
          m.append([])
          for j in range(1, n + 1):
             m[i].append(j)
        return m
      

      Après tu peux rendre ça plus compact, par exemple :
      def make_matrix(n):
        return [[i for i in range(1, n+1)] for _ in range(n)]
      

      mais c'est un peu plus dur à comprendre au premier coup d'œil, même si on s'y fait assez vite.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        30 janvier 2011 à 19:32:23

        Apparemment tu as le droit d'utiliser numpy (tu aurais pu le dire au moins).

        Il y a une fonction matrix qui te permet de créer une matrice.

        Sinon tu peux allez voir sur le site officiel de scipy ici

        Bon courage
        • Partager sur Facebook
        • Partager sur Twitter
          30 janvier 2011 à 22:05:51

          Effectivement on utilise numpy désolé j'ai oublié de le mentionner :)
          • Partager sur Facebook
          • Partager sur Twitter
            1 février 2011 à 20:16:57

            Tu peux effectivement utiliser les compréhensions de liste :

            # Sous Python 2.x, tu peux remplacer range() par xrange()
            [[cont for _ in range(x)]
                   for _ in range(y)]
            


            ou un generator expression si tu souhaite itérer

            # idem
            ((cont for _ in range(x))
                   for _ in range(y))
            


            - cont détermine le contenu des cases. Le contenu n'est pas forcemment constant, comme tu peux le voir dans l'exemple II
            - x détermine la longueur de la matrice et y la largeur

            Exemple I

            >> [[0 for _ in range(10)] for _ in range(8)]
            [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0,
             0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0
            , 0, 0, 0, 0, 0, 0]]


            Exemple II

            >> from random import randint
            >>> [[randint(0,1) for _ in range(5)] for _ in range(6)]
            [0, 0, 1, 0, 0], [1, 0, 1, 0, 0], [1, 1, 1, 1, 0], [1, 0, 0, 1, 0], [1, 1, 1, 1, 1], [0, 0, 1, 0, 0]]
            • Partager sur Facebook
            • Partager sur Twitter

            Matrice

            × 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