Найти индекс минимальных значений в заданном массиве в Python

Мне нужно найти индекс более чем одного минимального значения, которое встречается в массиве. Я довольно известен с np.argmin, но он дает мне индекс самого первого минимального значения в массиве. Например.

a = np.array([1,2,3,4,5,1,6,1])    
print np.argmin(a)

Это дает мне 0, вместо этого я ожидаю, 0,5,7.

Спасибо!

Ответы

Ответ 1

Это должно сделать трюк:

a = np.array([1,2,3,4,5,1,6,1]) 
print np.where(a == a.min())

argmin не возвращает список, как вы ожидаете, в этом случае.

Ответ 2

Может

mymin = np.min(a)
min_positions = [i for i, x in enumerate(a) if x == mymin]

Он даст [0,5,7].

Ответ 3

Я думаю, что это был бы самый простой способ, хотя он не использует какую-либо причудливую функцию numpy

a       = np.array([1,2,3,4,5,1,6,1])                                        
min_val = a.min()                                                            

print "min_val = {0}".format(min_val)                                        

# Find all of them                                                           
min_idxs = [idx for idx, val in enumerate(a) if val == min_val]              
print "min_idxs = {0}".format(min_idxs)