0
votes

En numpy, comment comparer toutes les valeurs dans un axe

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 ... xxx

Je veux remplacer tout [1, 0, 1] avec [1, 1, 1] ... de sorte que tableau devient xxx

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?


1 commentaires

Pourrait utiliser array [(tableau == [1, 0, 1, 1]). Tout (1)] = [1, 1, 1]


4 Réponses :


0
votes

Il y a une fonction intégrée dans Numpy nommé Array_equal qui compare deux tableaux pour l'égalité. Je pense que c'est la fonction que vous souhaitez utiliser.

Voici la documentation de celui-ci: HTTPS: // Numpy. org / doc / stable / référence / généré / numpy.array_equal.html .


0 commentaires

0
votes

np.sign () code> devrait vous aider à comparer une ligne entière à une autre.

np.sign([1,0,1] - [1,0,1])  # returns 0


0 commentaires

2
votes

Essayez avec: XXX


0 commentaires

0
votes

Votre tableau et votre tableau de recherche: xxx pré>

avec une forme (5,3) et (3,), nous pouvons comparer ceci avec: p> xxx Pré>

Ceci utilise la diffusion pour traiter le x code> comme (1,3). Dans d'autres cas, nous devrions avoir besoin d'ajuster les tableaux pour une diffusion appropriée. P>

et nous pouvons trouver les lignes qui correspondent exactement, toutes true: p> xxx pré>

si Nous utilisons ce réseau booléen pour indiquer la première dimension de Arr code>, nous obtenons les lignes [1,0,1]: p> xxx pré>

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>

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]])


0 commentaires