IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème ajouter col à une liste 2D


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2018
    Messages : 40
    Points : 14
    Points
    14
    Par défaut Problème ajouter col à une liste 2D
    Bonjour,

    Je ne trouve pas de solutions à mon soucis. Je dois mal chercher sur le net je pense. Voici ma problématique.

    Je veux partir de cette liste, qui sera mes entrés, potentiellement , elle peut etre extensible en terme de col:


    Ce que je désire réaliser :
    Problématique 1:
    1. Je lis ma matrice d'inputs en col
    2. a cette matrice je désire à l'aide d'une boucle for ajouter X col.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]],dtype=object)
    B= np.array([[4], [4], [4]])
    add = []
    for row in range(4):
        add = np.append(A,B,axis=1)
    print(add)
    => ici mon problème est que cela ajoute q'une seule col meme si je fais varier mon rage à 200

    Problématique 2
    1. Je lis ma matrice d'inputs en col
    2. J'utilise [:X] comme input d'une fonction. Ex : 1,4,7 ensuite 2,5,8 etc...
    3. Cette fonction par ex (juste pour l'exemple) me "return" col+1, donc 3 arguments
    4.Ces arguments je les recupère et je les insères dans une matrice en colonne
    5.Ainsi de suite

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Les solutions ne manquent pas pourtant sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    array = np.array([[1, 2, 3, 4],
           [4, 3, 2, 1]])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    np.insert(array, 4, values=[5,0], axis=1)
    array([[1, 2, 3, 4, 5],
           [4, 3, 2, 1, 0]])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.append(array, [[5],[0]], axis=1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.hstack((array, [[5],[0]]))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.concatenate((array, [[5],[0]]), axis=1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.column_stack([array, [[5],[0]]])

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2018
    Messages : 40
    Points : 14
    Points
    14
    Par défaut
    Merci pour le retour,
    J'ai du mal m'exprimé, sorry
    En statique j'y arrive, par cotre pas en dynamique.
    C'est à dire, étape par étapes.

    Ce que je désire réaliser.

    sur la base de cet imputje pars de cette input:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

    loop 1.
    ma matrice doit etre
    [[1], [4], [7]]


    loop 2
    [[1, 2], [4, 5], [7, 8]]

    loop 3
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]



    Sur ce sujet avec mon code, cela plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
     
    add = []
    for col in range(3):
     
        B = A[:, col]
        add=np.append(A, B, axis=1)
     
    print(add)

    Ensuite, afin de comprendre mieux la mécanique car c'est le but, je cherchais aussi à ajouter X col à une matrice
    avec mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    B= np.array([[4], [4], [4]])
    add = []
    for col in range(5):
     
     
        add=np.append(A, B, axis=1)
     
    print(add)
     
     
    Dans tous les cas j'ai (peut importe mon range)
     
    [[1 2 3 4]
     [4 5 6 4]
     [7 8 9 4]]
     
    lors que je voudrais 
     
    [[1 2 3 4 4 ....]
     [4 5 6 4 4 ....]
     [7 8 9 4 4 ....]]








    Citation Envoyé par LeNarvalo Voir le message
    Bonjour,

    Les solutions ne manquent pas pourtant sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    array = np.array([[1, 2, 3, 4],
           [4, 3, 2, 1]])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    np.insert(array, 4, values=[5,0], axis=1)
    array([[1, 2, 3, 4, 5],
           [4, 3, 2, 1, 0]])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.append(array, [[5],[0]], axis=1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.hstack((array, [[5],[0]]))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.concatenate((array, [[5],[0]]), axis=1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.column_stack([array, [[5],[0]]])

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 121
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 121
    Points : 1 628
    Points
    1 628
    Par défaut
    que dit la doc de la fonction np.append(arr,values,axes) ? ajoute à une copie des valeurs du tableau arr, les valeurs values selon l'axe dans une copie de arr.

    donc add=np.array(A,B,axes=1) va toujours faire la faire la même chose rajouter aux valeurs de A, les valeurs de B et mettre le résultat dans add; peut-importe le nombre de boucle, tant A et B seront les mêmes.
    Donc add doit être une copie de A et utiliser add comme tableau de valeurs de référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import numpy as np
    import copy
     
    A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
     
    add=copy.deepcopy(A)
     
    for col in range(3):
         B=np.vstack(A[:,col])
         add=np.append(add, B, axis=1)
     
    print(add)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Numpy n'est pas nécessaire pour ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> import numpy as np
    >>> array = [[1], [4], [7]]
    >>> for _ in range(9):
    ...     for row in array:
    ...         row.append(row[-1]+1)
    ... 
    ...         
    >>> np.array(array)
    array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
           [ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13],
           [ 7,  8,  9, 10, 11, 12, 13, 14, 15, 16]])
    Ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for row in array:
        row.extend([row[-1]+x for x in range(1,10)])

  6. #6
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2018
    Messages : 40
    Points : 14
    Points
    14
    Par défaut
    merci



    Citation Envoyé par umfred Voir le message
    que dit la doc de la fonction np.append(arr,values,axes) ? ajoute à une copie des valeurs du tableau arr, les valeurs values selon l'axe dans une copie de arr.

    donc add=np.array(A,B,axes=1) va toujours faire la faire la même chose rajouter aux valeurs de A, les valeurs de B et mettre le résultat dans add; peut-importe le nombre de boucle, tant A et B seront les mêmes.
    Donc add doit être une copie de A et utiliser add comme tableau de valeurs de référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import numpy as np
    import copy
     
    A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
     
    add=copy.deepcopy(A)
     
    for col in range(3):
         B=np.vstack(A[:,col])
         add=np.append(add, B, axis=1)
     
    print(add)

  7. #7
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2018
    Messages : 40
    Points : 14
    Points
    14
    Par défaut
    merci

    Citation Envoyé par LeNarvalo Voir le message
    Numpy n'est pas nécessaire pour ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> import numpy as np
    >>> array = [[1], [4], [7]]
    >>> for _ in range(9):
    ...     for row in array:
    ...         row.append(row[-1]+1)
    ... 
    ...         
    >>> np.array(array)
    array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
           [ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13],
           [ 7,  8,  9, 10, 11, 12, 13, 14, 15, 16]])
    Ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for row in array:
        row.extend([row[-1]+x for x in range(1,10)])

Discussions similaires

  1. problème ajout élément à une liste
    Par FATENMRABET dans le forum Général Python
    Réponses: 4
    Dernier message: 16/07/2019, 14h10
  2. [Débutant] probléme d'ajout dans une liste
    Par syrine01 dans le forum C#
    Réponses: 9
    Dernier message: 20/02/2016, 11h02
  3. Problème lors d'ajout d' une liste dans une liste
    Par poweriser dans le forum Général Java
    Réponses: 1
    Dernier message: 05/01/2014, 18h44
  4. [AC-2007] Ajouter des lignes à une liste basée sur une requête
    Par Cinesra dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/12/2010, 13h19
  5. Problème d'ajout dans une liste
    Par topgun1223 dans le forum C
    Réponses: 4
    Dernier message: 23/03/2010, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo