У меня есть маскированный массив, из которого я хотел бы вернуть индекс из минимальное значение. Кроме того, я хотел бы вернуть индекс случайно выбранного минимума, если его несколько. В приведенном ниже примере, это должно случайным образом возвращать индекс 4
или 5
:Получите минимальное значение маскированного массива
import numpy as np
import numpy.ma as ma
import random
my_mask = [1, 0, 0, 1, 0, 0]
my_array = [ 0.018, 0.011, 0.004, 0.003, 0.0, 0.0]
masked_array = ma.masked_array(my_array,my_mask)
min_indices = np.where(masked_array.min() == masked_array)
min_index = np.random.choice(min_indices[0])
print masked_array
print min_index
Моя проблема: Элементы маскированные рассматриваются как ноль, и любой элемент из {0,3,4,5}
может быть возвращен (?).
Мой вопрос: Каков хороший способ вернуть индекс (случайно выбранный) минимум из массива (исключая маскированные значения)?
Насколько я могу сказать, 'masked_array.min' делает игнорировать маскированные значения. У вас на самом деле есть нули в действительной части вашего массива. – tzaman