0
votes

Comment optimiser ce code? (Double boucle en python, avec une liste)

my_list = []
for x in range(len(imgbinary)):
    for y in range(len(imgbinary[0])):
        if imgbinary[x][y]==255 :
            my_list.append(imggray[x][y])

my_list.sort()          
I want this code to be as fast as possible, I'm sure using numpy would be way better.

0 commentaires

3 Réponses :


0
votes

STI

my_list = imggray[imgbinary == 255]


5 commentaires

Je pense que vous lisez trop vite. Il devrait être myList = imggray [imgbinary == 255] .


Mais j'ai besoin des valeurs de imggray


Je vais tester ceci: "MyList = imggray [imgbinary == 255]"


oh ok imggray est là alors


Hé, vous avez tort lorsque vous dites que le tri est inutile car les valeurs sont égales. C'est des données d'image en niveaux de gris, non binaire.



0
votes

Vous pouvez également essayer np.where : xxx


0 commentaires

0
votes

basé sur votre code, vous souhaitez obtenir les valeurs de imggray code> dans les positions de pixels où imgbinary code> est égal à 255.

Cela devrait fonctionner correctement sans boucle utilisée: p> xxx pré>


vitesse de 20 x 20 Images: strong> p>

%timeit sorted(imggray[imgbinary ==255])
10000 loops, best of 3: 111 µs per loop


0 commentaires