Pour une matrice numpue, comment puis-je modifier la valeur que si tous les éléments le long d'un axe sont égaux à un autre tableau? Par exemple ... Je veux remplacer tout lorsque j'utilise une matrice booléenne, il vérifie chaque numéro individuel. Comment puis-je comparer la ligne entière à la fois à la place? P> p> [1, 0, 1] code> avec [1, 1, 1] code> ... de sorte que tableau code> devient p>
4 Réponses :
Il y a une fonction intégrée dans Numpy nommé Voici la documentation de celui-ci: HTTPS: // Numpy. org / doc / stable / référence / généré / numpy.array_equal.html . P> Array_equal code> qui compare deux tableaux pour l'égalité. Je pense que c'est la fonction que vous souhaitez utiliser.
P>
np.sign () code> devrait vous aider à comparer une ligne entière à une autre. np.sign([1,0,1] - [1,0,1]) # returns 0
Essayez avec:
Votre tableau et votre tableau de recherche: avec une forme (5,3) et (3,), nous pouvons comparer ceci avec: p> Ceci utilise la diffusion pour traiter le et nous pouvons trouver les lignes qui correspondent exactement, toutes true: p> si Nous utilisons ce réseau booléen pour indiquer la première dimension de et nous pouvons Utilisez la même indexation pour remplacer les valeurs de ces lignes (à nouveau, cela utilise la diffusion pour placer un (3,) matrice dans un (2,3) emplacement: P> x code> comme (1,3). Dans d'autres cas, nous devrions avoir besoin d'ajuster les tableaux pour une diffusion appropriée. P> Arr code>, nous obtenons les lignes [1,0,1]: p> In [97]: arr[(arr == x).all(axis=1)]=[1,1,1]
In [98]: arr
Out[98]:
array([[1, 1, 1],
[0, 0, 1],
[1, 1, 0],
[0, 0, 0],
[1, 1, 1]])
Pourrait utiliser
array [(tableau == [1, 0, 1, 1]). Tout (1)] = [1, 1, 1] code>