Bonjour,

J'ai un petit soucis de temps de calcul sur une matrice numpy, et j'aurais besoin d'aide.
J'ai une matrice de taille n*n ( 10 < n < 9000 environ) qui ne peut contenir que 3 valeurs : 0, 1 ou 2

Nom : Debut.png
Affichages : 181
Taille : 2,4 Ko

0 = Noir
1 = Rouge
2 = Vert

Le but étant d'obtenir:

Nom : Fin.png
Affichages : 177
Taille : 2,0 Ko

C'est à dire d'étendre le rouge (1) sur le noir (0) en définissant le vert (2) comme délimitation.

Un moyen assez direct de le faire serait:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
for i in range(n):
    for j in range(n):
        if liste[i,j] == 1 and liste[i,j+1] == 0:
            liste[i,j+1] = 1
Le problème étant que c'est bien trop lent ! Réaliser les calculs un par un prend trop de temps. On peut penser à rajouter quelques lignes pour ne pas effectuer de calcul dans la zone entre la bordure et la ligne verte mais cela ne change pas le problème.

Je voulais donc savoir s'il y avait un moyen d'utiliser les fonctionnalités de numpy (notamment le multiprocessing sur les matrices) afin d'accélérer le tout.
Je m'en remets à vous.
Merci !