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

Calcul scientifique Python Discussion :

[Numarray]Coller une matrice dans une plus grande.


Sujet :

Calcul scientifique Python

  1. #1
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut [Numarray]Coller une matrice dans une plus grande.
    Salut Je souhaite coller une matrice dans une matrice plus grande et de facon centrée mais pour ca faut juste savoir la longueur de l'image et la hauteur.

    Exemple:


    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
     
    a=[[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]]
     
    Coller b=[[1,1,1]
             [1,1,1]
             [1,1,1]]
     
     
     Resultat
     
    [[0,0,0,0,0]
      [0,1,1,1,0]
      [0,1,1,1,0]
      [0,1,1,1,0]
      [0,0,0,0,0]]
    La je n'ai pas d'idée... et je cherche dans numarray user's guide...

    Merci de votre aide. Aplus
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  2. #2
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Je pense avoir trouvé..... Voir la fonction Boxcar.

    Enfait boxcar passe une masque de 1 d'une taille que l'on entre en argument sur un autre tableau.... C'est dans l'aide que j'ai vu quelque chose.Mais ca a laire chaud.

    pour une valeur fixe ca peut aller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import numarray as num
    a = num.zeros((10,10))
    a[3:6,3:6] = 111
    print a
    boxcar(a, (3,3)).astype('Long')
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  3. #3
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Je sais pas trop ce que fais boxcar mais sinon, pour faire ce que tu veux tu pouvais faire comme ceci:

    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
     
    from numarray import *
    def border(tab, n):
        rc, cc = tab.shape
        b1 = array(n * [cc*[0]])
        b2 = array(n * [(rc+2*n)*[0]])
        b2.transpose()
        tab = concatenate((tab, b1), 0)
        tab = concatenate((b1,tab), 0)
        tab = concatenate((tab, b2), 1)
        tab = concatenate((b2, tab), 1)        
        return tab
     
    tab = array([[1,1,1,1],[1,1,1,1],[1,1,1,1]])
    print border(tab, 2)

  4. #4
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Merci beaucoup GUIGUI.
    Sincerement ce petit bout de code me rend la vie plus facile.
    Donc grace a cette fonction je peut centré un tableau dans un plus grand en indiquant de combien de ligne et de colonne je veut qui soit entourré.

    C'est exactement ce qu'il me fallait.

    Merci et Bonne fin de soirée.
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  5. #5
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    En fait je me suis mal exprimer il manquait une caractere important.
    C'est que le grand tableau n'été pas forcement carré.
    En effet je travaille sur des images donc les dimension son rarement carrée.

    Voila je pense en avoir assez pour programmer ce bout de code.

    Alors si vous avez quelque chose avant moi .merci.


    BOnne nuit.:
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  6. #6
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Slt Bon jai avancé Je vous mmets mon bout de 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
    def creation(tab,dimx,dimy):
        li, co = tab.shape
        Ep=(dimx-co)/2
        print Ep
        Ha=(dimy-li)/2
        print Ha
        b1=N.array(Ha*[dimx*[0]])
        print b1
        b2=N.array(Ep*[(dimy-2*Ha)*[0]])
        b2.transpose()
        print b2
        tab = concatenate((tab, b1), 0)
        tab = concatenate((b1,tab), 0)
        tab = concatenate((tab, b2), 1)
        tab = concatenate((b2, tab), 1)        
        return tab
    Ca fonctionne a peut pres jusqu'a la premiere concaténation.Il me renvoi l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueError: _concat array shapes must match except 1st dimension
    Voila merci d'avance.
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  7. #7
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Est-ce que c'est alors plutôt quelquechose comme ceci ?

    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
     
    from numarray import *
    def border2(tab, nbrows, nbcols):
        rc, cc = tab.shape
        if (nbrows-rc) % 2 == 1: raise Exception, 'impossible de centrer le tableau'
        else: b1 = array(((nbrows-rc) / 2) * [cc*[0]])
        print b1
        if (nbcols-cc) % 2 == 1 : raise Exception, 'impossible de centrer le tableau'    
        b2 = array(((nbcols-cc)/2) * [nbrows*[0]])
        b2.transpose()
        print b2
        tab = concatenate((tab, b1), 0)
        tab = concatenate((b1,tab), 0)
        tab = concatenate((tab, b2), 1)
        tab = concatenate((b2, tab), 1)        
        return tab
     
    tab = array([[1,1,1,1],[1,1,1,1],[1,1,1,1]])
    print border2(tab, 7, 10)

  8. #8
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Encore une fois merci a toi.

    Estce que tu peux me rappeler ce que fais la ligne (enfin surtout le role du %)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (nbrows-rc) % 2 == 1:
    Car il me renvoi l'erreur impossible de centré le tableau. Je me demande si ce n'est pas pour savoir si la soustraction nbrows-rc est multiple de 2



    Verif: OUi ca doit etre ca car j'ai diminuer mon image d'un pixel de largueur et un pixel de hauteur et ca fonctionne..


    Voila merci
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  9. #9
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Hi,

    % c'est la fonction modulo. Renvoie le reste de la division par 2.

    C;
    MacOS 10.5 / Ubuntu / C / Python / R
    Pensez au tag résolu

  10. #10
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Merci bien.
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacement d'une ligne par une autre dans une matrice
    Par Mathematiker dans le forum Scilab
    Réponses: 4
    Dernier message: 17/02/2015, 15h57
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 18h37
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2007, 00h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 11h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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