Autor Tópico: Python: Como pegar os índices dos 5 menores elementos em um array? [Resolvido]  (Lida 3533 vezes)

Darcamo

  • Visitante
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.
« Última modificação: 23 de Fevereiro de 2008, 11:22 por Darcamo »

Darcamo

  • Visitante
Como pegar os índices dos 5 menores elementos em um numpy.array? [Resolvido]
« Resposta #1 Online: 23 de Fevereiro de 2008, 11:21 »
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.