0
votes

Comparaison de données NUMPY Array

J'ai deux array numpopy 3D xxx

et, xxx

Je voudrais comparer si les données Game_Log correspondent à l'un des matrices en win_compination si elle correspond à l'impression true sinon impression false.

je veux essentiellement que si game_log == [[0, 0], [0, 1], [0, 2]] Il peut Imprimer true si ce n'est pas alors mon code doit comparer un autre tableau de jeu_log == [[[[[[[[[[[1, 1], [1, 1], [1, 2]] sinon #Auher et ainsi de suite jusqu'à la fin et l'impression false si Il n'y a pas de tableau qui correspond à Game_Log et dans ce cas, il devrait imprimer false

J'ai essayé, xxx


3 commentaires

Que s'est-il passé quand tu as essayé? Quelle est votre question actuelle?


Vous n'avez pas deux tableaux 3D. Vous avez un 2D et un 3D


Unindent le sinon . Vous ne voulez pas nécessairement retourner faux si le premier élément ne correspond pas.


3 Réponses :


0
votes

IIUC:

ans = np.any(np.all(game_log == win_combination, axis=(1,2)))
print(ans)


4 commentaires

Vous n'avez pas besoin de reproduire game_log : la diffusion fait-il pour vous depuis la ligne de dimensions à droite. Vous n'avez pas besoin de taille non plus. Toute votre solution n'est que la troisième ligne, mais avec game_log au lieu de jeux .


Voici un lien que vous trouverez peut-être intéressant: docs.cipy.org/doc/ Numpy / utilisateur / Basics.Broadcasting.html . C'est ce qui fait tellement de la magie de la magie dans Possible.


Merci pour les commentaires! Je ne suis pas si bon avec la radiodiffusion, peut-être que ce lien aide-moi @madphysiciste


Voici un autre qui m'a aidé à mieux le visualiser: docs.cipy.org/ Doc / Numpy / Utilisateur / Théory.Broadcasting.html . Ce n'est pas un sujet simple, mais vous vous y habituez après un certain temps. L'idée de base est d'aligner les formes à droite.



0
votes

Essayez cette méthode:

   def in_array(game_log, array):
        for comb in array:
            for arr in comb:
                if game_log.all() == arr.all():
                    return True
        return False


2 commentaires

Vous devriez vraiment retourner des valeurs au lieu de les imprimer. Vous pouvez toujours imprimer une valeur de retour, mais vous ne pouvez pas récupérer ce que vous avez imprimé sans le retourner.


Merci pour la fixation



1
votes

Deux matrices sont égaux si np.all (x == y) (ou alternativement (x == y) .All () ). Vous avez un tableau 3D de forme (n, a, b) et un tableau 2D de forme (a, b) . Dans ce cas, n = 8 , a = 3 et b = 2 . Ces formes diffusent la forme de la matrice 3D. Si vous appliquez np.all < / a> Pour les deux dernières dimensions, vous pouvez obtenir n true ou fausses pour chacune des combinaisons. np.any Je vous dirai ensuite si l'un d'entre eux sont true .

tout a un axe mot-clé. AS de NUMPUY 1.7.0, AXIS peut spécifier plusieurs axes simultanément, de sorte que vous pouvez faire: xxx

pour les anciennes versions de numpy, vous Devrait remodeler pour obtenir un seul axe ou appliquer tout deux fois: xxx

ou xxx

Le résultat final est correspondance.any () ou np.any (correspondance) . Vous pouvez l'écrire sous la forme d'un one-liner: xxx


0 commentaires