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 avec un while if et else


Sujet :

Python

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut Problème avec un while if et else
    Bonjour

    j'ai un array de plusieurs milliers de lignes.

    je souhaiterais parcourir ce tableau afin de trouver une ligne selon 4 critères.

    je pense qu'un while est la solution, premièrement faut il un for avant le while, il me semble que non.

    Ensuite, comment utiliser le if et le else, selon si la condition est vérifiée ou non?

    voilà mon début de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while a>=tab[i,1] and  a<tab[i,3] and b>=tab[i,2] and  b<tab[i,8] :
            if #conditions non trouvée : 
                ligne=[-1]*col
            else #conditions trouvée: 
    	    ligne=tab[i,:]
    print ligne
    merci d'avance pour les réponses

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Au choix:

    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 numpy import array
     
    tab = array([[245,12,34,36,455],[1654,23,5,230,100],[11,409,56,34,12]])
    lin,col = tab.shape
    print 'tab =\n',tab,'\n'
     
    a,b =34,23
    i = 0
    while i<lin:
        ln = tab[i,:]
        if a>=ln[1] and  a<ln[3] and b>=ln[2] and  b<ln[0] :
            print ln
        else:
            print [-1]*col
        i += 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from numpy import array
     
    tab = array([[245,12,34,36,455],[1654,23,5,230,100],[11,409,56,34,12]])
    lin,col = tab.shape
    print 'tab =\n',tab,'\n'
     
    a,b =34,23
    for i in xrange(lin):
        ln = tab[i,:]
        if a>=ln[1] and  a<ln[3] and b>=ln[2] and  b<ln[0] :
            print ln
        else:
            print [-1]*col
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from numpy import array
     
    tab = array([[245,12,34,36,455],[1654,23,5,230,100],[11,409,56,34,12]])
    lin,col = tab.shape
    print 'tab =\n',tab,'\n'
     
    a,b =34,23
    for ln in tab:
        if a>=ln[1] and  a<ln[3] and b>=ln[2] and  b<ln[0] :
            print ln
        else:
            print [-1]*col

    J'ai remplacé un 8 par un nombre plus petit pour ne pas avoir à construire un trop grand tableau.

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    merci pour ces réponses mais aucune solution fonctionne, celà me renvoie que le résultats quand la condition n'est pas trouvée alors qu'il y a des solutions dans mon tableau

    résultat que des -1

    voilà un exemple d'une ligne de mon tableau
    pour a=62
    b=2
    le reésultat doit renvoyer cette ligne et non -1
    [ 211. 61.1 2. 67.95622 2. 67.92450
    2.25 61.1321 2.25 0.84600002 0.68400
    0.84100 0.84200 0.71600 0.83600 0.75999]]
    merci pour l'aide

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Ce code est étrange, la condition du while porte sur la variable i.
    cette variable (non initialisée sur ce code) n'évolue pas dans la boucle.
    Je ne vois pas comment cela peut marcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while a>=tab[i,1] and  a<tab[i,3] and b>=tab[i,2] and  b<tab[i,8] :
            if #conditions non trouvée : 
                ligne=[-1]*col
            else #conditions trouvée: 
    	    ligne=tab[i,:]
    print ligne

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    je pense qu'il y a à la fois un problème de syntaxe et de logique

    pour résumer je veux chercher une ligne dans un tableau selon 4 critères et la renvoyer comme réponse

    si je la trouve pas renvoyer une ligne de -1

    merci pour l'aide

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    pour résumer je veux...
    Ça ne sert a rien de résumer. On veut au contraire un maximum de renseignements pour répondre.

    Zavonen a bien raison:

    CE CODE est étrange, la condition du while porte sur la variable i.
    cette variable (non initialisée SUR CE CODE) n'évolue pas DANS LA BOUCLE.
    Je ne vois pas comment cela peut marcher.
    Sous-entendu, la boucle telle qu'elle est écrite dans CE CODE.

    Tu ne donnes pas un code compréhensible, en tous cas il est riquiqui, et tu penses que ça suffit pour qu’on sorte la solution du chapeau.





    Ton premier message:
    - j'ai un array ...
    - je souhaiterais ....
    - je pense que....
    - comment utiliser....
    À aucun endroit il n’est question d’un code que tu as fait tourner et de la difficulté rencontrée ou de l’erreur obtenue.

    Ton code du premier message, si tu as essayé de le faire tourner, tu as dû obtenir une boucle infinie. Tu n’as peut être pas compris que c’est ce qui se passait. Dans ces cas là, il faut potasser les tutoriels sur les boucles; ou se faire aider sur un forum en posant des questions correctement goupillées; ou aller faire de la peinture.....





    Une condition n’est pas «trouvée» ou «non trouvée»,

    elle est «vérifiée» ou «non vérifiée».







    Avec
    [ 211. 61.1 2. 67.95622 2. 67.92450 2.25 61.1321 2.25 0.84600002 0.68400
    0.84100 0.84200 0.71600 0.83600 0.75999]

    il n’y a aucune raison que les conditions ne soient pas vérifiées:
    sauf erreur on a bien
    62 >= 61.1
    62 < 67.95622
    2 >= 2.0
    2 < 2.25

    Notamment, 2 sans point est bien égal à 2.0 avec point.



    Et quand je fais tourner le code suivant (les lignes ont 11 éléments et non pas 16, ça n’a pas d’importance; j’ai remis la dernière condition avec un 8),

    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 numpy import array
     
    tab = array([[245, 23.08, 20.13, 9.09, 17, 12 ,34, 36, 455, 0.87, 0.3456],\
                 [ 211., 61.1, 2., 67.95622, 2., 67.92450, 2.25, 61.1321, 2.25, 0.84600002, 0.68400],\
                 [0.84100, 0.84200, 1.98, 0.71600, 0.83600, 0.75999, 11, 409, 56, 34, 12]])
    lin,col = tab.shape
    print 'tab =\n',tab,'\n'
     
    a,b = 62,2
     
    for ln in tab:
        if a>=ln[1] and  a<ln[3] and b>=ln[2] and  b<ln[8] :
            print ln
        else:
            print [-1]*col
    j’obtiens bien la sortie de la ligne désiree.

    tab =
    [[ 2.45000000e+02 2.30800000e+01 2.01300000e+01 9.09000000e+00
    1.70000000e+01 1.20000000e+01 3.40000000e+01 3.60000000e+01
    4.55000000e+02 8.70000000e-01 3.45600000e-01]
    [ 2.11000000e+02 6.11000000e+01 2.00000000e+00 6.79562200e+01
    2.00000000e+00 6.79245000e+01 2.25000000e+00 6.11321000e+01
    2.25000000e+00 8.46000020e-01 6.84000000e-01]
    [ 8.41000000e-01 8.42000000e-01 1.98000000e+00 7.16000000e-01
    8.36000000e-01 7.59990000e-01 1.10000000e+01 4.09000000e+02
    5.60000000e+01 3.40000000e+01 1.20000000e+01]]

    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [ 211. 61.1 2. 67.95622 2. 67.9245
    2.25 61.1321 2.25 0.84600002 0.684 ]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    Maintenant si tu nous dis simplement «Ça marche pas ! » sans nous dire quel code tu utilises, on ne peut rien faire de plus.
    C’est comme si:
    - Docteur, j’ai mal.
    - Où ça ?
    - Ah , je dis pas ! Devinez.


    Donne un code et un copier-coller de ce que tu obtiens, stp.
    Je ne comprends pas qu'on ne pense pas de soi-même à le faire, après plus de 140 messages sur le forum.

    Ah mais c’est que je m’énerverais si je ne restais pas calme

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    désolé pour les mauvaises indications de ma part

    j'ai avancé sur ce code et je me suis trouvé bloqué, je suis donc parti sur une autre piste pour trouver ma ligne dans mon tableau selon mes critères.

    j'ai utilisé plutôt une sélection, une recherche d'indice et une intersection entre mes indices, cela donne ça :

    je donne un vecteur a et b au préalable
    a = arange(0.,3.,0.25)
    b=arange(0.,3.,0.25)
    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
    for i in range(0,len(a)):
        vecteur_1=tab_final[:,2]
        vecteur_2=tab_final[:,8]
        vec_1=vecteur_1.copy()
        vec_2=vecteur_2.copy()
     
        S_1=(a[i]>=vec_1)
        S_2=(a[i]<vec_2)
        idx_1=where(S_1)
        idx_2=where(S_2)
        vec1=intersect1d_nu(idx_1,idx_2)
        for j in range(0,len(b)):
                #copie des vecteurs
                vecteur_3=tab_fina[:,1]
                vecteur_4=tab_final[:,3]
                vec_3=vecteur_3.copy()
                vec_4=vecteur_4.copy()
     
                S_3=(b[j]>=vec_3)
                S_4=(b[j]<vec_4)
                idx_3=where(S_3)
                idx_4=where(S_4)
                vec2=intersect1d_nu(idx_3,idx_4)
                #print veclon
                pos=intersect1d_nu(vec1,vec2)
                #print pos
                ligne=tab_final[pos,:]
     
                plot[i][j]=ligne[0][9]

    ce code marche mais il est lent pour des arange plus important

    Avez vous une idée pour optimiser et éviter peut être cette boucle i et j


    merci d'avance

  8. #8
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Non, ce code ne marche pas. Ce que j’appelle un code qui marche, c’est un code prêt à l’emploi en faisant un simple copié-collé.
    Pour l’essayer , j’ai dû rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from numpy import *
     
    a = arange(0.,3.,0.25)
    b = arange(0.,3.,0.25)
    print 'a =',a
    print 'b =',b
     
    tab_final = array([[245, 23.08, 20.13, 9.09, 17, 12 ,34, 36, 455, 0.87, 0.3456],\
                 [ 211., 61.1, 2., 67.95622, 2., 67.92450, 2.25, 61.1321, 2.25, 0.84600002, 0.68400],\
                 [0.84100, 0.84200, 1.98, 0.71600, 0.83600, 0.75999, 11, 409, 56, 34, 12]])
    print 'tab =\n',tab
    sans être sûr que c’était ce qu’il y avait à faire.


    Puis j’ai dû corriger le tab_fina après le début for j in range(0,len(b)):


    Et enfin là j’obtiens l’erreur
    Traceback (most recent call last):
    plot[i][j]=ligne[0][9]
    IndexError: index out of bounds


    Je rajoute donc
    print 'vec1 =',vec1
    print 'vec2 =',vec2
    print 'ligne =',ligne
    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
    40
    41
    42
    43
    44
    45
    from numpy import *
     
    a = arange(0.,3.,0.25)
    b = arange(0.,3.,0.25)
    print 'a =',a
    print 'b =',b
     
    tab_final = array([[245, 23.08, 20.13, 9.09, 17, 12 ,34, 36, 455, 0.87, 0.3456],\
                 [ 211., 61.1, 2., 67.95622, 2., 67.92450, 2.25, 61.1321, 2.25, 0.84600002, 0.68400],\
                 [0.84100, 0.84200, 1.98, 0.71600, 0.83600, 0.75999, 11, 409, 56, 34, 12]])
    print 'tab_final =\n',tab_final
     
     
     
    for i in range(0,len(a)):
        vecteur_1=tab_final[:,2]
        vecteur_2=tab_final[:,8]
        vec_1=vecteur_1.copy()
        vec_2=vecteur_2.copy()
     
        S_1=(a[i]>=vec_1)
        S_2=(a[i]<vec_2)
        idx_1=where(S_1)
        idx_2=where(S_2)
        vec1=intersect1d_nu(idx_1,idx_2)
        print 'vec1 =',vec1
        for j in range(0,len(b)):
                #copie des vecteurs
                vecteur_3=tab_final[:,1]
                vecteur_4=tab_final[:,3]
                vec_3=vecteur_3.copy()
                vec_4=vecteur_4.copy()
     
                S_3=(b[j]>=vec_3)
                S_4=(b[j]<vec_4)
                idx_3=where(S_3)
                idx_4=where(S_4)
                vec2=intersect1d_nu(idx_3,idx_4)
                print 'vec2 =',vec2
                #print veclon
                pos=intersect1d_nu(vec1,vec2)
                print 'pos =',pos
                ligne=tab_final[pos,:]
                print 'ligne =',ligne
                plot[i][j]=ligne[0][9]
    et j'obtiens

    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.25  0.5   0.75  1.    1.25  1.5   1.75  2.    2.25  2.5   2.75]
    b = [ 0.    0.25  0.5   0.75  1.    1.25  1.5   1.75  2.    2.25  2.5   2.75]
    tab_final =
    [[  2.45000000e+02   2.30800000e+01   2.01300000e+01   9.09000000e+00
        1.70000000e+01   1.20000000e+01   3.40000000e+01   3.60000000e+01
        4.55000000e+02   8.70000000e-01   3.45600000e-01]
     [  2.11000000e+02   6.11000000e+01   2.00000000e+00   6.79562200e+01
        2.00000000e+00   6.79245000e+01   2.25000000e+00   6.11321000e+01
        2.25000000e+00   8.46000020e-01   6.84000000e-01]
     [  8.41000000e-01   8.42000000e-01   1.98000000e+00   7.16000000e-01
        8.36000000e-01   7.59990000e-01   1.10000000e+01   4.09000000e+02
        5.60000000e+01   3.40000000e+01   1.20000000e+01]]
    vec1 = []
    vec2 = []
    pos = []
    ligne = []
    Traceback (most recent call last):
        plot[i][j]=ligne[0][9]
    IndexError: index out of bounds
    Maintenant, le problème est que je ne sais pas si cette erreur est due à ce que j’ai ajouté comme données au début pour avoir un code qui tourne, ou si c’est ton code qui ne marche pas.

    J’ai essayé de comprendre un peu ton code mais je ne suis pas allé très loin parce qu’entre mon code court, complet, qui marche et le tien compliqué et qui ne marche trois fois pas, je ne vois pas trop pourquoi il faudrait s’obstiner sur ton code.

    Optimiser un mauvais code, ce n’est pas ma tasse de thé.
    Si tu as des éléments nouveaux, informe nous.

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    désolé pour le tab_fina, j'ai du faire une mauvaise manip

    au début du code je fournis un plot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot=array([[0.]*len(b)]*len(a))
    ce code marche et fait partie d'un code beaucoup plus long, plus de 200 lignes

    le tableau fait plus de 600 000 lignes

    j'ai testé l'ensemble des parties de mon code avec une fonction time et il est trés lent dans cette partie de code que je vous ai fournie

    étant donné que je suis débutant sous python, je me demande si c'est pas possible d'améliorer cette double boucle en la vectorisant pour rendre cette partie plus rapide mais là j'ai aucune piste

    pour tes réponses [ ] c'est normal

    voilà le début du tableau pour t'indiquer

    [[ 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.20000000e+02
    0.00000000e+00 1.20000000e+02 2.50000000e-01 0.00000000e+00
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 2.00000000e+00 1.20000000e+02 0.00000000e+00 2.40000000e+02
    0.00000000e+00 2.40000000e+02 2.50000000e-01 1.20000000e+02
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 3.00000000e+00 2.40000000e+02 0.00000000e+00 3.60000000e+02
    0.00000000e+00 3.60000000e+02 2.50000000e-01 2.40000000e+02
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 4.00000000e+00 0.00000000e+00 2.50000000e-01 4.00000000e+01
    2.50000000e-01 4.00000000e+01 5.00000000e-01 0.00000000e+00
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 5.00000000e+00 4.00000000e+01 2.50000000e-01 8.00000000e+01
    2.50000000e-01 8.00000000e+01 5.00000000e-01 4.00000000e+01
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 6.00000000e+00 8.00000000e+01 2.50000000e-01 1.20000000e+02
    2.50000000e-01 1.20000000e+02 5.00000000e-01 8.00000000e+01
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 7.00000000e+00 1.20000000e+02 2.50000000e-01 1.60000000e+02
    2.50000000e-01 1.60000000e+02 5.00000000e-01 1.20000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 8.00000000e+00 1.60000000e+02 2.50000000e-01 2.00000000e+02
    2.50000000e-01 2.00000000e+02 5.00000000e-01 1.60000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 9.00000000e+00 2.00000000e+02 2.50000000e-01 2.40000000e+02
    2.50000000e-01 2.40000000e+02 5.00000000e-01 2.00000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 1.00000000e+01 2.40000000e+02 2.50000000e-01 2.80000000e+02
    2.50000000e-01 2.80000000e+02 5.00000000e-01 2.40000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]]
    tu auras des réponses, toutes à -1

    merci

  10. #10
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Ton code, ou du moins le résultat de l’aggrégation des éléments que tu as donnés (est-ce que ça donne bien ce que doit être ton 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    from numpy import array,arange,where,intersect1d_nu
     
    tab_final = array([[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 1.20000000e+02,
                   0.00000000e+00, 1.20000000e+02, 2.50000000e-01, 0.00000000e+00,
                   2.50000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 2.00000000e+00, 1.20000000e+02, 0.00000000e+00, 2.40000000e+02,
                   0.00000000e+00, 2.40000000e+02, 2.50000000e-01, 1.20000000e+02,
                   2.50000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 3.00000000e+00, 2.40000000e+02, 0.00000000e+00, 3.60000000e+02,
                   0.00000000e+00, 3.60000000e+02, 2.50000000e-01, 2.40000000e+02,
                   2.50000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 4.00000000e+00, 0.00000000e+00, 2.50000000e-01, 4.00000000e+01,
                   2.50000000e-01, 4.00000000e+01, 5.00000000e-01, 0.00000000e+00,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 5.00000000e+00, 4.00000000e+01, 2.50000000e-01, 8.00000000e+01,
                   2.50000000e-01, 8.00000000e+01, 5.00000000e-01, 4.00000000e+01,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 6.00000000e+00, 8.00000000e+01, 2.50000000e-01, 1.20000000e+02,
                   2.50000000e-01, 1.20000000e+02, 5.00000000e-01, 8.00000000e+01,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 7.00000000e+00, 1.20000000e+02, 2.50000000e-01, 1.60000000e+02,
                   2.50000000e-01, 1.60000000e+02, 5.00000000e-01, 1.20000000e+02,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 8.00000000e+00, 1.60000000e+02, 2.50000000e-01, 2.00000000e+02,
                   2.50000000e-01, 2.00000000e+02, 5.00000000e-01, 1.60000000e+02,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 9.00000000e+00, 2.00000000e+02, 2.50000000e-01, 2.40000000e+02,
                   2.50000000e-01, 2.40000000e+02, 5.00000000e-01, 2.00000000e+02,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 1.00000000e+01, 2.40000000e+02, 2.50000000e-01, 2.80000000e+02,
                   2.50000000e-01, 2.80000000e+02, 5.00000000e-01, 2.40000000e+02,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00]])
     
    print 'tab =\n',tab,'\n'
     
    a = arange(0.,3.,0.25)
    b = arange(0.,3.,0.25)
     
    plot=array([[0.]*len(b)]*len(a))
    print plot
    print type(plot)
     
     
    for i in range(0,len(a)):
        vecteur_1=tab_final[:,2]
        vecteur_2=tab_final[:,8]
        vec_1=vecteur_1.copy()
        vec_2=vecteur_2.copy()
     
        S_1=(a[i]>=vec_1)
        S_2=(a[i]<vec_2)
        idx_1=where(S_1)
        idx_2=where(S_2)
        vec1=intersect1d_nu(idx_1,idx_2)
        for j in range(0,len(b)):
                #copie des vecteurs
                vecteur_3=tab_final[:,1]
                vecteur_4=tab_final[:,3]
                vec_3=vecteur_3.copy()
                vec_4=vecteur_4.copy()
     
                S_3=(b[j]>=vec_3)
                S_4=(b[j]<vec_4)
                idx_3=where(S_3)
                idx_4=where(S_4)
                vec2=intersect1d_nu(idx_3,idx_4)
                #print veclon
                pos=intersect1d_nu(vec1,vec2)
                #print pos
                ligne=tab_final[pos,:]
     
                plot[i][j]=ligne[0][9]
    Résultat:

    tab =
    [[ 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.20000000e+02
    0.00000000e+00 1.20000000e+02 2.50000000e-01 0.00000000e+00
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 2.00000000e+00 1.20000000e+02 0.00000000e+00 2.40000000e+02
    0.00000000e+00 2.40000000e+02 2.50000000e-01 1.20000000e+02
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 3.00000000e+00 2.40000000e+02 0.00000000e+00 3.60000000e+02
    0.00000000e+00 3.60000000e+02 2.50000000e-01 2.40000000e+02
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 4.00000000e+00 0.00000000e+00 2.50000000e-01 4.00000000e+01
    2.50000000e-01 4.00000000e+01 5.00000000e-01 0.00000000e+00
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 5.00000000e+00 4.00000000e+01 2.50000000e-01 8.00000000e+01
    2.50000000e-01 8.00000000e+01 5.00000000e-01 4.00000000e+01
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 2.11000000e+02 6.11000000e+01 2.00000000e+00 6.79562200e+01
    2.00000000e+00 6.79245000e+01 2.25000000e+00 6.11321000e+01
    2.25000000e+00 8.46000020e-01 6.84000000e-01 8.41000000e-01
    8.42000000e-01 7.16000000e-01 8.36000000e-01 7.59990000e-01]
    [ 6.00000000e+00 8.00000000e+01 2.50000000e-01 1.20000000e+02
    2.50000000e-01 1.20000000e+02 5.00000000e-01 8.00000000e+01
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 7.00000000e+00 1.20000000e+02 2.50000000e-01 1.60000000e+02
    2.50000000e-01 1.60000000e+02 5.00000000e-01 1.20000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 8.00000000e+00 1.60000000e+02 2.50000000e-01 2.00000000e+02
    2.50000000e-01 2.00000000e+02 5.00000000e-01 1.60000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 9.00000000e+00 2.00000000e+02 2.50000000e-01 2.40000000e+02
    2.50000000e-01 2.40000000e+02 5.00000000e-01 2.00000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 1.00000000e+01 2.40000000e+02 2.50000000e-01 2.80000000e+02
    2.50000000e-01 2.80000000e+02 5.00000000e-01 2.40000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]]

    [[ 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. 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. 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. 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. 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. 0. 0. 0. 0. 0. 0. 0.]
    [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
    <type 'numpy.ndarray'>
    Traceback (most recent call last):
    File "E:/Python/Essais Python/zplot.py", line 82, in <module>
    plot[i][j]=ligne[0][9]
    IndexError: index out of bounds
    >>>


    Comme je l’ai dit , je n’ai pas envie de chercher plus avant la raison de cette erreur.

    En effet, voici mon code, avec ton tableau dans lequel j’ai rajouté la ligne
    [ 211. 61.1 2. 67.95622 2. 67.92450 2.25 61.1321 2.25 0.84600002 0.68400
    0.84100 0.84200 0.71600 0.83600 0.75999],
    , et avec les valeurs a = 62 et b = 2,
    que tu as toi-même données dans le message #3:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    from numpy import array,arange
     
    tab = array([[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 1.20000000e+02,
                   0.00000000e+00, 1.20000000e+02, 2.50000000e-01, 0.00000000e+00,
                   2.50000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 2.00000000e+00, 1.20000000e+02, 0.00000000e+00, 2.40000000e+02,
                   0.00000000e+00, 2.40000000e+02, 2.50000000e-01, 1.20000000e+02,
                   2.50000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 3.00000000e+00, 2.40000000e+02, 0.00000000e+00, 3.60000000e+02,
                   0.00000000e+00, 3.60000000e+02, 2.50000000e-01, 2.40000000e+02,
                   2.50000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 4.00000000e+00, 0.00000000e+00, 2.50000000e-01, 4.00000000e+01,
                   2.50000000e-01, 4.00000000e+01, 5.00000000e-01, 0.00000000e+00,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 5.00000000e+00, 4.00000000e+01, 2.50000000e-01, 8.00000000e+01,
                   2.50000000e-01, 8.00000000e+01, 5.00000000e-01, 4.00000000e+01,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 211., 61.1, 2., 67.95622,\
                   2., 67.92450, 2.25, 61.1321,\
                   2.25, 0.84600002, 0.68400, 0.84100,\
                   0.84200, 0.71600, 0.83600, 0.75999],\
                 [ 6.00000000e+00, 8.00000000e+01, 2.50000000e-01, 1.20000000e+02,
                   2.50000000e-01, 1.20000000e+02, 5.00000000e-01, 8.00000000e+01,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 7.00000000e+00, 1.20000000e+02, 2.50000000e-01, 1.60000000e+02,
                   2.50000000e-01, 1.60000000e+02, 5.00000000e-01, 1.20000000e+02,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 8.00000000e+00, 1.60000000e+02, 2.50000000e-01, 2.00000000e+02,
                   2.50000000e-01, 2.00000000e+02, 5.00000000e-01, 1.60000000e+02,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 9.00000000e+00, 2.00000000e+02, 2.50000000e-01, 2.40000000e+02,
                   2.50000000e-01, 2.40000000e+02, 5.00000000e-01, 2.00000000e+02,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00],\
                 [ 1.00000000e+01, 2.40000000e+02, 2.50000000e-01, 2.80000000e+02,
                   2.50000000e-01, 2.80000000e+02, 5.00000000e-01, 2.40000000e+02,
                   5.00000000e-01, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
                   -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00]])
     
    lin,col = tab.shape
    print 'tab =\n',tab,'\n'
    a,b = 62,2
     
    ligneFalse = [-1]*col
    for ln in tab:
        if a>=ln[1] and  a<ln[3] and b>=ln[2] and  b<ln[8] :
            print ln
            continue
        print ligneFalse


    Résultat: la ligne est bien détectée comme répondant aux critères que tu as donnés dans ton premier message.

    tab =
    [[ 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.20000000e+02
    0.00000000e+00 1.20000000e+02 2.50000000e-01 0.00000000e+00
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 2.00000000e+00 1.20000000e+02 0.00000000e+00 2.40000000e+02
    0.00000000e+00 2.40000000e+02 2.50000000e-01 1.20000000e+02
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 3.00000000e+00 2.40000000e+02 0.00000000e+00 3.60000000e+02
    0.00000000e+00 3.60000000e+02 2.50000000e-01 2.40000000e+02
    2.50000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 4.00000000e+00 0.00000000e+00 2.50000000e-01 4.00000000e+01
    2.50000000e-01 4.00000000e+01 5.00000000e-01 0.00000000e+00
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 5.00000000e+00 4.00000000e+01 2.50000000e-01 8.00000000e+01
    2.50000000e-01 8.00000000e+01 5.00000000e-01 4.00000000e+01
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 2.11000000e+02 6.11000000e+01 2.00000000e+00 6.79562200e+01
    2.00000000e+00 6.79245000e+01 2.25000000e+00 6.11321000e+01
    2.25000000e+00 8.46000020e-01 6.84000000e-01 8.41000000e-01
    8.42000000e-01 7.16000000e-01 8.36000000e-01 7.59990000e-01]

    [ 6.00000000e+00 8.00000000e+01 2.50000000e-01 1.20000000e+02
    2.50000000e-01 1.20000000e+02 5.00000000e-01 8.00000000e+01
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 7.00000000e+00 1.20000000e+02 2.50000000e-01 1.60000000e+02
    2.50000000e-01 1.60000000e+02 5.00000000e-01 1.20000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 8.00000000e+00 1.60000000e+02 2.50000000e-01 2.00000000e+02
    2.50000000e-01 2.00000000e+02 5.00000000e-01 1.60000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 9.00000000e+00 2.00000000e+02 2.50000000e-01 2.40000000e+02
    2.50000000e-01 2.40000000e+02 5.00000000e-01 2.00000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]
    [ 1.00000000e+01 2.40000000e+02 2.50000000e-01 2.80000000e+02
    2.50000000e-01 2.80000000e+02 5.00000000e-01 2.40000000e+02
    5.00000000e-01 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00
    -1.00000000e+00 -1.00000000e+00 -1.00000000e+00 -1.00000000e+00]]

    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [ 211. 61.1 2. 67.95622 2. 67.9245
    2.25 61.1321 2.25 0.84600002 0.684 0.841
    0.842 0.716 0.836 0.75999 ]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
    >>>
    Il est certain que si tu veux qu’une ligne s’allume dans un tableau, il faut qu’il y en ait une qui vérifie les critères.....

    Y en a-t-il une dans le tableau que tu as écrit dans le message #9 ?

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    pour répondre au dernier message dans mon premier tableau, il y avait que des réponses -1

    avec ce tableau ci vous aurez des réponses
    [[ 201. 352.34 1.75 360. 1.75 360.
    2. 352.34 2. -1. -1. -1.
    -1. -1. -1. -1. ]
    [ 202. 0. 2. 6.79245 2. 6.79245
    2.25 0. 2.25 0.84899998 0.69099998
    0.84899998 0.85100001 0.72899997 0.833 0.76200002]
    [ 203. 6.79245 2. 13.5849 2. 13.5849
    2.25 6.79245 2.25 0.84899998 0.69499999
    0.85000002 0.85399997 0.736 0.83600003 0.76899999]
    [ 204. 13.5849 2. 20.3774 2. 20.3774
    2.25 13.5849 2.25 0.85100001 0.69800001
    0.85299999 0.85900003 0.73900002 0.84299999 0.77399999]
    [ 205. 20.3774 2. 27.1698 2. 27.1698
    2.25 20.3774 2.25 0.84399998 0.69099998
    0.847 0.85900003 0.741 0.85399997 0.78100002]
    [ 206. 27.1698 2. 33.9623 2. 33.9623
    2.25 27.1698 2.25 0.84200001 0.68699998
    0.84600002 0.86199999 0.74299997 0.86000001 0.78799999]
    [ 207. 33.9623 2. 40.7547 2. 40.7547
    2.25 33.9623 2.25 0.838 0.67799997
    0.83999997 0.85799998 0.73100001 0.85699999 0.78100002]
    [ 208. 40.7547 2. 47.5472 2. 47.5472
    2.25 40.7547 2.25 0.83999997 0.676
    0.84100002 0.85600001 0.72399998 0.85500002 0.77700001]
    [ 209. 47.5472 2. 54.3396 2. 54.3396
    2.25 47.5472 2.25 0.84600002 0.68000001
    0.84500003 0.85100001 0.72500002 0.83999997 0.76899999]
    [ 210. 54.3396 2. 61.1321 2. 61.1321
    2.25 54.3396 2.25 0.84200001 0.67799997
    0.838 0.84100002 0.71399999 0.83499998 0.75700003]
    [ 211. 61.1321 2. 67.9245 2. 67.9245
    2.25 61.1321 2.25 0.84600002 0.68400002
    0.84100002 0.84200001 0.71600002 0.83600003 0.75999999]
    [ 212. 67.9245 2. 74.717 2. 74.717
    2.25 67.9245 2.25 0.85100001 0.69099998
    0.84600002 0.84799999 0.71899998 0.83899999 0.76200002]
    [ 213. 74.717 2. 81.5094 2. 81.5094
    2.25 74.717 2.25 0.86799997 0.70999998
    0.86299998 0.86500001 0.736 0.85100001 0.778 ]
    [ 214. 81.5094 2. 88.3019 2. 88.3019
    2.25 81.5094 2.25 0.86299998 0.71100003
    0.86000001 0.86199999 0.73799998 0.84200001 0.77100003]
    [ 215. 88.3019 2. 95.0943 2. 95.0943
    2.25 88.3019 2.25 0.86699998 0.72000003
    0.86299998 0.86400002 0.74699998 0.82800001 0.76099998]
    [ 216. 95.0943 2. 101.887 2. 101.887
    2.25 95.0943 2.25 0.86500001 0.72500002
    0.86199999 0.86500001 0.75 0.83499998 0.764 ]
    [ 217. 101.887 2. 108.679 2. 108.679
    2.25 101.887 2.25 0.86299998 0.727 0.861
    0.86400002 0.75300002 0.84500003 0.77100003]
    [ 218. 108.679 2. 115.472 2. 115.472
    2.25 108.679 2.25 0.86699998 0.73400003
    0.86500001 0.866 0.75999999 0.83700001 0.76700002]
    [ 219. 115.472 2. 122.264 2. 122.264
    2.25 115.472 2.25 0.85900003 0.73000002
    0.85699999 0.85900003 0.75599998 0.833 0.76599997]
    [ 220. 122.264 2. 129.057 2. 129.057
    2.25 122.264 2.25 0.85600001 0.72600001
    0.85500002 0.85799998 0.75599998 0.83700001 0.77200001]]
    Mon problème n'est pas là

    je voulais juste savoir, en tant que débutant sous ce langage, s'il y a des possibilités d'optimiser cette partie du code et donc avoir l'opinion de membres confirmés. Si c'est le cas, juste avoir des pistes par 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    a=arrange(0.,3.,0.25)
    b=arange(0.,3.,0.25)
    plot=array([[0.]*len(b)]*len(a))
    for i in range(0,len(a)):
        vecteur_1=tab_final[:,2]
        vecteur_2=tab_final[:,8]
        vec_1=vecteur_1.copy()
        vec_2=vecteur_2.copy()
     
        S_1=(a[i]>=vec_1)
        S_2=(a[i]<vec_2)
        idx_1=where(S_1)
        idx_2=where(S_2)
        vec1=intersect1d_nu(idx_1,idx_2)
        for j in range(0,len(b)):
                #copie des vecteurs
                vecteur_3=tab_final[:,1]
                vecteur_4=tab_final[:,3]
                vec_3=vecteur_3.copy()
                vec_4=vecteur_4.copy()
     
                S_3=(b[j]>=vec_3)
                S_4=(b[j]<vec_4)
                idx_3=where(S_3)
                idx_4=where(S_4)
                vec2=intersect1d_nu(idx_3,idx_4)
                #print veclon
                pos=intersect1d_nu(vec1,vec2)
                #print pos
                ligne=tab_final[pos,:]
     
                plot[i][j]=ligne[0][9]
    merci

Discussions similaires

  1. [FPDF] Problème avec un while dans un tableau
    Par nigg4z dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2007, 15h13
  2. [MySQL] Problème avec un "while"
    Par fantasygirl dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/08/2007, 02h09
  3. Réponses: 2
    Dernier message: 17/10/2005, 22h16
  4. Problème avec Do while rs.EOF
    Par lauraned dans le forum ASP
    Réponses: 12
    Dernier message: 21/05/2004, 12h00

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