0
votes

Trouvez une valeur minimale dans un élément de colonne dans une matrice numpue et stockez la ligne correspondante en tant que nouveau tableau

J'ai un tableau NUMPY comme ci-dessous, et j'aimerais créer une nouvelle matrice numpy qui a une ligne qui a la valeur minimale dans la dernière colonne qui est élément de xx [:, 4] . xxx

Je sais que nous pouvons utiliser np.min (xx [:, 4]) pour obtenir 3.33260017e-01 dans le dernière colonne. Cependant, j'ai besoin d'extraire toutes les valeurs de la ligne correspondante, qui sera celle-ci

[3.54827629E-01 -1.88511194E + 00 4.70728062E-01 1.95791971E-01 3.33260017E-01] .

dans une matrice multidimensionnelle, telle que xx.shape = (1000,4) , comment puis-je obtenir les emplacements des éléments de la valeur minimale?

Ma question est l'une d'entre elles.

  1. Fabriquez une nouvelle matrice numpie uniquement avec la ligne qui a la valeur minimale dans la dernière colonne.

  2. Supprimez toutes les lignes, à l'exception de la ligne qui a la valeur minimale dans la dernière colonne.


1 commentaires

xx [xx [:, -1] .argmin ()] ?


3 Réponses :


1
votes

Vous êtes presque là, vous voulez np.where xxx


3 commentaires

np.argmin (xx, axis = -2) : plus concis et moins de calcul.


Besoin de passer à: idx = np.where (xx [:, 4] == np.min (xx [:, 4]))


Ah, tu as raison, mon test j'ai utilisé -1 là-bas, je ne sais pas comment j'ai converti en zéro ici ...



1
votes

une solution: xxx

solution pure numpy: xxx


3 commentaires

Veuillez afficher tout votre code sous forme de texte plutôt que des captures d'écran du texte. Les images ne sont pas systématiquement formatées correctement sur les appareils et sont impossibles aux technologies d'assistance telles que les lecteurs d'écran à interpréter.


Merci @aaron. Réparera.


@Kris Votre réponse a été très utile! et ça a fonctionné! Merci!



2
votes

argmin code> vous donnera l'index dans lequel la valeur minimale est.

>>> xx=np.array([[2,1,3],[1,0,2],[3,3,1]])
>>> xx
array([[2, 1, 3],
       [1, 0, 2],
       [3, 3, 1]])
>>> column = 1
>>> i = xx[:,column].argmin()
1
>>> xx[i,:]  # get the row where column 1 has the minimum
array([1, 0, 2])


1 commentaires

Cela fait plus de travail que nécessaire, il vous suffit de faire argmin sur la colonne correspondante ( xx [xx [: i] .argmin ()] ).