获取屏蔽数组的最小值

时间:2015-09-10 04:16:33

标签: python arrays numpy indexing mask

我有一个蒙面数组,我希望从中返回最小值索引。此外,如果有多个索引,我想返回随机选择的最小索引。在下面的示例中,这应该随机返回 索引45

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}中的任何元素。

我的问题:从数组中返回(随机选择的)最小值的索引(不包括屏蔽值)有什么好方法?

1 个答案:

答案 0 :(得分:2)

使用ma.where()代替np.where()

min_indices = ma.where(masked_array == masked_array.min()))
print(min_indices)

给出了:

(array([4, 5]),)

ma模块具有许多旨在与掩码数组一起使用的函数。

最后,从这个结果中抓取一个随机元素就像是:

min_index = np.random.choice(min_indices[0])