Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Débutant] Définir la taille d'un array (numpy)

Sujet résolu
    11 février 2013 à 13:26:30

    Bonjour à tous,

    Je me permets de revenir vers vous car la dernière fois, j'ai trouvé mon bonheur et en tant que grande débutante en Python, c'est top !

    Je cherche à définir des tableaux de réels (array avec numpy), de taille n*3 (par exemple), ce qui en Fortran se traduirait par REAL (KIND=8), DIMENSION (1:n,1:3)

    Ce tableau serait par la suite rempli par des valeurs issues de fichiers texte (chose que je ne sais pas encore faire, mais je vais essayer de me débrouiller un peu avant de vous embêter avec ça...)

    Mon problème actuel, c'est que je me perds un peu dans toutes les manières de définir un array avec Numpy. Je ne comprends pas comment faire pour définir un tableau QUELCONQUE, qui pourra être rempli plus tard et auquel on pourra accéder aux valeurs lorsqu'il sera rempli, tout en définissant à l'avance sa dimension.

    J'espère que j'ai été claire quant à mon problème et je suis désolée de vous solliciter avec des problèmes simplissimes pour vous tous qui vous y connaissez... Merci de votre indulgence ! (je fais ce que je peux !)

    Merci beaucoup par avance,

    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2013 à 15:33:22

      En ce qui concerne la definition d'un array de reels de taille n*3, je pense que ca se definit de cette maniere:

      array = numpy.zeros((n, 2), float)

      La fonction zero accepte deux parametres: le premier est un tuple contenant les dimensions de ton array et le deuxieme est le type des elements dans ton array. Toutes les valeurs sont initialisees a zero.

      Pour ce qui est de l'initialisation de ton tableau depuis un fichier:

      Si on suppose que ton fichier contient des valeurs a la suite separees par un espace ("1 2 3..."). Ton code ressemblerait a quelque chose comme ca a mon avis:

      with open("somefile.txt", "r") as f:
          values = f.read().split()
          k = 0
          for i, j in zip(range(0, len(values)+1, 3), range(3, len(values)+1, 3)):
              if k < n:
                  a[k][:] = values[i:j] # a = ton array
                  k += 1

      En esperant t'avoir aide!

      -
      Edité par stackOverflow 11 février 2013 à 16:12:12

      • Partager sur Facebook
      • Partager sur Twitter
        11 février 2013 à 17:20:47


        Vraiment, merci. J'avais effectivement commencé en faisant un tableau de zéros, mais ça ne me paraissait pas juste, car je me disais qu'il fallait plutôt créer un tableau "fictif" (disons "vide") de dimension n*3. (je ne sais pas si je suis claire !)

        Bon, du coup, c'est super, je me lance sur cette voie...

        Par contre, au cas où d'autres personnes lisent ce post, pour un tableau de réels de dimensions n*3, c'est plutôt : numpy.zeros((n,3),float)

        Merci également pour les indications pour l'initialisation des valeurs à partir d'un fichier, je n'ai pas encore testé mais ça ne saurait tarder !

        • Partager sur Facebook
        • Partager sur Twitter

        [Débutant] Définir la taille d'un array (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