Bonjour,
Je me heurte à une difficulté qui, à mon niveau, me pose problème.
J'ai un tableau NumPy de forme (2, 10920).
Pour les besoins de mon explication, j'ai limité le nombre de colonnes à 20 soit de 0 à 19 inclus:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [[0.4625 0.6856 0.7016 0.4912 0.7537 0.768 0.5193 0.7622 0.4744 0.4632 0. 0.7486 0.4844 0.6658 0.7615 0.4686 0. 0. 0. 0. ] [1. 1. 0. 0. 1. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. ]]
Mes colonnes sont en réalité la juxtaposition de résultats regroupés par 20; 10920 est donc un multiple de 20.
En ligne 0, nous avons des chiffres diverses type float.
En ligne 1, nous ne trouverons que des float de valeur 1.0 ou 0.0 qui, parmi les paquets de 20 colonnes, ne peuvent contenir que 5 fois la valeur 1.0 .
Ce que je cherche à effectuer, c'est, parmi ces paquets de 20 colonnes, identifier sur la ligne 0 les 8 valeurs les plus élevées (en cas d'égalité sur les dernières colonnes retenues celles dont l'index est le plus faible) et une fois qu'elles sont identifiées - ce qui constitue en réalité le but poursuivi - déterminer le nombre de ces paquets de 8 colonnes les plus élevées en ligne 0 celles qui contiennent en ligne 1 les 5 valeurs 1.0 .
Au final ce que je souhaite, c'est réduire les ensembles de 20 colonnes en des ensembles de 8 colonnes constituées des plus grandes valeurs du rang 0 et ensuite déterminer parmi ces nouveaux ensembles de 8 colonnes, le nombre de fois où ces paquets de 8 colonnes contiennent au range 1 les 5 float 1.0.
Je me suis dit que NumPy pouvait être un bon outil pour effectuer cette recherche au plus vite car cette démarche va être effectuée sur de grandes quantités de situations.
Si quelqu'un aurait un piste, ce serait sympa. Merci d'avance en tout cas.
Partager