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 :

Rogner une matrice


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Rogner une matrice
    Bonjour,
    J'aimerais rogner une matrice mais j'ai un problème de dimension. En effet, j'ai des pièces de tetris ou je dois enlever les zéros par exemple O=np.array([[1,1,0],[1,1,0],[0,0,0]]) ma fonction marche pour cette pièce mais pas pour le I=np.array([[1,1,1],[0,0,0],[0,0,0]]) où je dois rogner deux fois, je ne sais pas comment faire j'avais pensé à une boucle for pour tout faire une seconde fois mais j'ai un problème de dimension.
    Merci par avance,
    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
    def rogner(matrice):
        L_ligne=[]
        L_colonne=[]
        size=np.shape(matrice)
        for i in range(size[0]):
            ligne=0
            colonne=0
            for j in range(size[1]):
                ligne+=matrice[i,j]
                colonne+=matrice[j,i]
            if ligne==0:
                L_ligne.append(i)
            if colonne==0:
                L_colonne.append(j)
        if len(L_ligne)>0:
            matrice=np.delete(matrice,(i),0)
        if len(L_colonne)>0:
            matrice=np.delete(matrice,(j),1)
        print(matrice)

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Bonjour,
    Tout d'abord si tu veux réutiliser ta fonction rogner, tu devrais mettre un return(matrice) au lieu de print(matrice).

    Je pense qu'il serait plus simple de retirer d'abord les lignes de 0 avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def ro(mat):
        n=mat.shape[0]
        m1=np.array([mat[i] for i in range(n)if 1 in mat[i]]) # retire les lignes de 0
        return(m1)
    puis refaire la même chose pour les colonnes en utilisant la transposée de la matrice par exemple

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par whiterabbit Voir le message
    je dois enlever les zéros par exemple O=np.array([[1,1,0],[1,1,0],[0,0,0]])
    Votre besoin n'est pas clair. Si vous avez la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    O=np.array([[1,0,0],[1,1,0],[0,0,0]])
    vous etes cencé retourner quoi ?

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    Votre besoin n'est pas clair. Si vous avez la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    O=np.array([[1,0,0],[1,1,0],[0,0,0]])
    vous etes cencé retourner quoi ?
    Je suis censé retourner np.array([[1,1],[1,1]]).

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    Votre besoin n'est pas clair. Si vous avez la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    O=np.array([[1,0,0],[1,1,0],[0,0,0]])
    vous etes cencé retourner quoi ?
    Citation Envoyé par motomath Voir le message
    Bonjour,
    Tout d'abord si tu veux réutiliser ta fonction rogner, tu devrais mettre un return(matrice) au lieu de print(matrice).

    Je pense qu'il serait plus simple de retirer d'abord les lignes de 0 avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def ro(mat):
        n=mat.shape[0]
        m1=np.array([mat[i] for i in range(n)if 1 in mat[i]]) # retire les lignes de 0
        return(m1)
    puis refaire la même chose pour les colonnes en utilisant la transposée de la matrice par exemple
    Merci beaucoup je vais donc essayer ceci !

  6. #6
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par whiterabbit Voir le message
    Citation Envoyé par lg53
    Votre besoin n'est pas clair. Si vous avez la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    O=np.array([[1,0,0],[1,1,0],[0,0,0]])
    vous etes cencé retourner quoi ?
    Je suis censé retourner np.array([[1,1],[1,1]]).
    Donc tu as un zéro qui se change en 1 ? Tu retournes toujours une matrice remplie de 1 ?

Discussions similaires

  1. [PL/SQL] définir une matrice
    Par lalystar dans le forum Oracle
    Réponses: 5
    Dernier message: 22/02/2005, 15h27
  2. [JTable] remplir avec une matrice
    Par ybdz dans le forum Composants
    Réponses: 3
    Dernier message: 08/12/2004, 21h03
  3. Recherche des coefficients d'une matrice 3x3
    Par colorid dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 25/11/2004, 16h52
  4. recadrer (rogner) une image
    Par prodi_64 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 19/10/2004, 11h57
  5. Déclarer une matrice
    Par joy dans le forum C
    Réponses: 7
    Dernier message: 09/12/2002, 00h42

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