2014-05-24 5 views
0

У меня есть numpy.array данных с именем f, я знаю, что максимальное значение в нем равно f_max=max(f), но мне хотелось бы знать индекс в массиве, соответствующий максимальному значению.Найти индекс, соответствующий максимальному значению массива numpy

Я пробовал:

count = 0 
while (f[count]!=fmax) 
    conto ++ 

, но я получаю сообщение об ошибке:

SyntaxError: invalid syntax 

Может кто-нибудь мне помочь?

+0

На синтаксической ошибки: вам нужно ':' в конце 'while' заявление, и использовать' счетчик + = 1', но ниже ответ правильный способ сделать это. –

+0

@Caos обратите внимание, что я отредактировал ваш вопрос и включил тэг 'numpy' ** на основе приведенной ниже информации о том, что вы используете массив numpy. ** Если эта информация неверна, скажите об этом. – Ffisegydd

+0

Да! Я подтверждаю, что я использовал массив numpy – Caos

ответ

1

Самый простой способ - найти max, а затем найти его индекс.

>>> a = [1, 5, 2, 3, 4] 
>>> val = max(a) 
>>> a.index(val) 
1 

Вы также можете использовать enumerate, чтобы получить список индексов и значений, соответствующих им и выбрать максимальную среди них.

>>> list(enumerate(a)) 
[(0, 1), (1, 5), (2, 2), (3, 3), (4, 4)] 
>>> index, _ = max(enumerate(a), key = lambda x: x[1]) 
>>> index 
1 
+0

Выполнение этого я получаю: объект «numpy.ndarray» не имеет атрибута «index» – Caos

+0

@Caos: Вы должны упомянуть, что у вас есть массив Numpy. –

+2

@Caos: Вы должны использовать 'np.argmax' в этом случае. –

4

Если вы уже используете numpy, вы можете сделать это с помощью argmax().

import numpy as np 
a = np.array([1, 5, 2, 6, 3]) 

index = a.argmax() 
Смежные вопросы