le 08-14-2014 03:14 AM
Bonjour à tous,
Voici le problème sur lequel je bute depuis un certain moment:
j'ai 2 tableaux de même taille en entrée exmple et 1 tableau en sortie, j'aimerai remplir le tableau de sortie q'avec certaines valeurs bien précise
Exemple:
le tableau 1 (entrée) contient les valeurs [4, 2, 3, 4]
le tableau 2 (entrée) les valeurs [10, 3, 5, 8]
j'aimerai remplir mon tableau de sortie qu'avec les valeurs du tableau 2 correspondantes aux valeurs quand tableau 1 contient la valeurs 4 en d'autre termes j'aimerai avoir en sortie mon tableau rempli avec les valeurs [10, 8] sans qu'il n'ai de zeros (les tableau d'entrées peuvent être de taille plus importante).
Merci d'avance pour votre aide (exemple, explication...) et bonne journée à tous
Résolu ! Accéder à la solution.
le
08-14-2014
03:37 AM
- dernière modification le
01-10-2025
01:54 PM
par
Content Cleaner
tu peux utiliser le "conditional indexing"
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
08-14-2014 03:47 AM - modifié 08-14-2014 03:49 AM
solutions multiples
(la 1ere c'est comme TiTou ... posté alors que je n'avais pas vu ton message TiTou)
la 2eme ... une petite cabriole, j'aime bien les cabrioles
08-14-2014 03:50 AM - modifié 08-14-2014 03:52 AM
je sais pas si on peut faire plus compliqué que ta deuxième solution ouadji...
est ce que celle là est trop simple?
et si tu cherche à optimiser tu te rendra compte que dans ton code, si tu mets la constante 4 à l'intérieur de la boucle FOR, ça ira plus vite
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 08-14-2014 04:07 AM
Je n'aime pas de mettre un "build_Array"dans une boucle For.
C'est déconseillé (je pense) ... car LV doit redimensionner le Tableau à chaque itération.
si,si ... il doit y avoir moyen de faire plus complqiué ...
PS:
suis pas certain que de mettre le "4" dedans ou dehors changera qq chose.
Dans les 2 cas le compilo voit bien que c'est une constante .... à tester.
le 08-14-2014 04:08 AM
Merci à tous les deux, vous avez sauvé ma journé et mon diplôme d'ingénieur
le 08-14-2014 04:15 AM
D'une manière générale j'aime bien "travailler" sur des Tableaux de tailles connue et fixe.
En générale ... je n'aime pas trop cette fonction "Build_Array" .. surtout dans les boucles.
Je le vois bien avec mon code ChessEngine (sur lequel je bosse toujours)
Travailler avec des tableaux de tailles fixes (initialize array + code + reshape en sortie) est nettement plus rapide.
Dans ma 2eme solution, je n'utilise pas "initialize array" ... je profite d'un Tableau déjà existant.
hummmm ... avec un Tableau de grande taille ... pas certain du code qui sera le plus rapide ... TiTou ou Ouadji n°2
(je dis bien avec un Tableau de grande taille ... avec 4 éléments, un crayon et une feuille de papier, c'est ok aussi )
08-14-2014 07:49 AM - modifié 08-14-2014 07:54 AM
Petit test "rapide".
(sans faire compliqué ... juste pour avoir une "première idée")
Les valeurs "absolues" sont sans importance.
Seuls les rapports de comparaison ont un sens.
deux tableaux aléatoires de 10E+7 éléments chacun (entre 0 et 10)
Résultats (multiple essais et moyenne) (Intel Core2Quad Q6600 - 4Go - 2,4Ghz - XPsp3)
Tunel indexé "conditionnel" : 95 (ms)
Build Array + structure case : 230 (ms)
ouadji n°2 (replace array) : 125 (ms)
Je n'ai remarqué aucune différence de temps "manifeste" avec la constante "4" dedans ou dehors, et ce dans les 3 codes.
le 08-14-2014 11:55 AM
J'ai trouvé mieux (vitesse) ... plus rapide que le Tunnel Indexé Conditionnel
.
(Tunnel conditionnel : 95 ms - voir ci-dessus)
le code ci-dessous : 81 ms
(mêmes conditions de test - résultat identique)
le 08-14-2014 12:28 PM
toujours plus vite ... 67 ms
(mêmes conditions - résultat identique)
plus vite ? peut-être quelque chose de récursif (j'en doute fort), ou alors du côté du parallélisme (?)