Python: Como pegar os índices dos 5 menores elementos em um array? [Resolvido]

Iniciado por Darcamo, 22 de Fevereiro de 2008, 17:54

tópico anterior - próximo tópico

Darcamo

Estou usando o array do módulo numpy/scipy.

Preenchi o array com alguns valores e preciso pegar os índices dos 5 menores elementos. Estou procurando, mas ainda não achei uma forma de fazer isso. Alguém sabe como?

Até agora só consegui descobrir como retornar o menor elemento do array com min(arrayQualquer) mas não consegui pegar o índice.

Um detalhe é que é um array de float então comparar o elemento retornado por min(arrayQualquer) com cada elemento de arrayQualquer para encontrar o índice não é uma boa idéia.

Darcamo

Descobri como fazer isso facilmente.
É só usar a função argsort.

>>> a = array([ 3.5,  0.5,  1. ,  4. ,  1.5,  0. ,  3. ,  2.5,  4.5,  0.5])
>>> argsort(a)
        array([5, 1, 9, 2, 4, 7, 6, 0, 3, 8])

Ou seja, o menor elemento de "a" é o elemento de índice 5, depois o de índice 1 e assim por diante.