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 :

Moyenne par tranche sur un nuage de point


Sujet :

Calcul scientifique Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut Moyenne par tranche sur un nuage de point
    Bonjour à tous !

    Je plot un nuage de point (cf figure jointe)

    (sans unité pour les ordonnées et en radians pour l'axe des abscisses).

    J'aimerai calculer une moyenne par tranche sur l'ensemble de ce nuage de point : avec des tranches de largeur PI/18 (sur l'axe des abscisses). Ceci afin d'avoir un graphe plus lisible avec un seul point par tranche.

    J'ai essayé d'écrire le programme suivant, mais cela ne marche pas terrible...

    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
     
    y = y.ravel()
    x = x.ravel()
    yr= y[~np.isnan(y)]
    xr = x[~np.isnan(y)]
     
    tranche = np.empty([1,19800]) #je définis mes matrices vides
    tranche=tranche.ravel()
    x2 = np.empty([1,19800])
    x2=x2.ravel()
     
     
    for i in x[::np.pi/18]:
     
      y_tranche = yr[i-np.pi:i]
     
      tranche[i] = np.mean(~np.isnan(y_tranche))
     
      x_tranche = xr[i-np.pi:i]
      x_tranche = psi_tranche[~np.isnan(psi_tranche)]
      x2[i] = (np.max(x_tranche)-np.min(x_tranche))/2 #le point aura une abscisse au milieu de la tranche
    déjà python me met "invalid slice" pour np.pi/18, et même si je change ma largeur en np.pi, cela ne marche pas.

    Je pense que je ne m'y prend pas très bien.

    Auriez vous des conseils à me donner, existe t-il une fonction python pour faire cela directement?

    Merci d'avance

    Romain
    Images attachées Images attachées  

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    Du coup j'ai essayé plutot un truc dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    slice_bounds = np.arange(-np.pi,np.pi,np.pi/18)
    mean=np.zeros([len(slice_bounds)])
    x=np.zeros([len(slice_bounds)])
    j=0
    for i in slice_bounds:
      #computing current slice
      target_slice = target1[(i<psi1) & (psi1<i+np.pi/18)]
      mean[j] = np.mean(target_slice)
      x[j] = i
      j=j+1
      print i

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/09/2008, 19h13
  2. aligner un plan sur un nuage de points
    Par pschmidtke dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/09/2008, 18h02
  3. Une contrainte sur 2 nuages de points
    Par Nemerle dans le forum Algorithmes et structures de données
    Réponses: 37
    Dernier message: 02/09/2008, 02h04
  4. Changer la taille et la forme d'un point sur un nuage de points
    Par onejock dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/06/2008, 14h47
  5. Appliquer une image 2D sur un nuage de points
    Par eleon_ dans le forum MATLAB
    Réponses: 6
    Dernier message: 18/04/2008, 12h47

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