J'ai deux array numpopy 3D et, p> 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. p> 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 p> J'ai essayé, p>
3 Réponses :
IIUC:
ans = np.any(np.all(game_log == win_combination, axis=(1,2))) print(ans)
Vous n'avez pas besoin de reproduire game_log code>: 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 code> au lieu de
jeux code>.
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.
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
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
Deux matrices sont égaux si pour les anciennes versions de numpy, vous Devrait remodeler pour obtenir un seul axe ou appliquer ou p> Le résultat final est np.all (x == y) code> (ou alternativement
(x == y) .All () code>). Vous avez un tableau 3D de forme
(n, a, b) code> et un tableau 2D de forme
(a, b) code>. Dans ce cas,
n = 8 code>,
a = 3 code> et
b = 2 code>. Ces formes diffusent la forme de la matrice 3D. Si vous appliquez
np.all code> < / a> Pour les deux dernières dimensions, vous pouvez obtenir
n code>
true code> ou
fausses code> pour chacune des combinaisons.
np.any code>
Je vous dirai ensuite si l'un d'entre eux sont true code>.
tout code> a un
axe code> mot-clé. AS de NUMPUY 1.7.0,
AXIS CODE> peut spécifier plusieurs axes simultanément, de sorte que vous pouvez faire: p>
tout code> deux fois: p>
correspondance.any () code> ou
np.any (correspondance) code>. Vous pouvez l'écrire sous la forme d'un one-liner: p>
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 code>. Vous ne voulez pas nécessairement retourner
faux code> si le premier élément ne correspond pas.