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 :

remplissage d'un array 3D


Sujet :

Calcul scientifique Python

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut remplissage d'un array 3D
    Bonjour,
    je cale sur ce truc : il faut que je transforme cet array RAW en un array 3d comportant les elements z aux coordonnées x et y.

    donc a partir de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    RAW = [\
    [1,1,10],\
    [1,2,20],\
    [2,1,30],\
    [2,2,40],\
    [1,1,110],\
    [1,2,120],\
    [2,1,130],\
    [2,2,140],\
    ]
    il me faudrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    X = [1,2]
     
    Y = [1,2]
     
    Z = [
    [[10,110],
    [20,120]],
     
    [[30,130],
    [40,140]],
    ]
    J'ai essayé avec des append, des insert, des concatenate, mais ca ne le fait pas :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    #!/usr/bin/python
    import os
    import sys
    from pylab import *
    import numpy as np
    import time
    import datetime
     
    RAW = [\
    [1,1,10],\
    [1,2,20],\
    [2,1,30],\
    [2,2,40],\
    [1,1,110],\
    [1,2,120],\
    [2,1,130],\
    [2,2,140],\
    ]
     
    RAW = np.transpose(RAW)
    X = np.unique(RAW[0])
    Y = np.unique(RAW[1])
     
    Z = np.zeros((len(X),len(Y),1))
     
    print Z
     
     
    RAW = np.transpose(RAW)
    for raw in RAW:
    	x = raw[0]
    	y = raw[1]
    	z = raw[2]
    	iX = np.where(X==x)[0][0]
    	iY = np.where(Y==y)[0][0] 
    	print Z[iX,iY]
    	print np.append(Z[iX,iY],z)
    	Z[iX,iY] = np.append(Z[iX,iY],z)
    ça par exemple, ça me retourne : "ValueError: output operand requires a reduction, but reduction is not enabled"

    c'est un exemple simplifié, car a la base, mon tableau RAW n'est pas nécessairement trié (et beaucoup plus gros).

    Merci pour votre aide !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Je propose 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
    20
    21
    22
    import numpy as np
     
    RAW = [[1,1,10],
           [1,2,20],
           [2,1,30],
           [2,2,40],
           [1,1,110],
           [1,2,120],
           [2,1,130],
           [2,2,140],
           ]
     
    RAW = np.array(RAW)
     
    X = np.unique(RAW[:,0])
    Y = np.unique(RAW[:,1])
     
    Z = [[[] for _ in Y] for _ in X]
    for (x,y,z) in RAW:
        Z[where(X==x)[0]][where(Y==y)[0]].append(z)
     
    Z = np.array(Z)

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    merci !

    je n'aurai pas pensé qu'il fut nécessaire de repasser par une liste...
    Mais ça marche bien, merci !

Discussions similaires

  1. Fonction récursive pour remplissage Array
    Par WibiMaster dans le forum Langage
    Réponses: 15
    Dernier message: 14/02/2011, 08h41
  2. Remplissage d'un array à 2 dimensions rapidement
    Par kevpagnat dans le forum Débuter
    Réponses: 6
    Dernier message: 15/12/2009, 15h15
  3. Probleme remplissage Array 2d avec un For
    Par Nico820 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/07/2008, 08h37
  4. [débutant] remplissage d'un array
    Par CompuTux dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 20/09/2007, 12h41
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

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