J'ai un tableau NumPy à 2 dimensions. Je sais comment obtenir les valeurs maximales sur les axes:
>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])
Comment puis-je obtenir les indices des éléments maximum? Donc je voudrais comme sortiearray([1,1,0])
la source
a = np.array([[1,4,3],[4,3,1]])
pour voir qu'il revienti,j==0,1
, et néglige la solution ài,j==1,0
. Pour les indices de tous les maxima, utilisez à la placei,j = where(a==a.max()
.argmax()
ne renverra que la première occurrence pour chaque ligne. http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.htmlSi jamais vous avez besoin de le faire pour un tableau mis en forme, cela fonctionne mieux que
unravel
:Vous pouvez également modifier vos conditions:
Ce qui précède vous donne les résultats sous la forme que vous avez demandée. Alternativement, vous pouvez convertir en une liste de coordonnées x, y en:
la source
indices = np.where(a==a.max())
à la ligne 3?.max()
au lieu de.argmax()
. Veuillez modifier la réponsex_y_coord = [(0, 2), (1, 1)]
cela ne correspond PAS à la réponse @eumiro, et est erronée. Par exemple, essayez aveca = array([[7,8,9],[10,11,12]])
pour voir que votre code n'a aucun hit sur cette entrée. Vous mentionnez également que cela fonctionne mieux queunravel
, mais la solution postée par @blas répond au problème du maximum absolu, pas seulement le long d'un axe.la source