Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从numpy掩码数组中拾取任意未掩码元素_Numpy_Python 2.7 - Fatal编程技术网

从numpy掩码数组中拾取任意未掩码元素

从numpy掩码数组中拾取任意未掩码元素,numpy,python-2.7,Numpy,Python 2.7,我有一个dtype=uint8的三维屏蔽数组,我想做一些类似于arr.max(axis=-1),但不是总是选择max,我想(1)找到第一个(或最后一个)未屏蔽元素,(2)随机选择任意未屏蔽元素或(3)沿轴选择中值或模式,如numpy.ma.median或scipy.stats.mstats.mode 这种方法(3)是我在理想世界中想要的,但它非常缓慢。然后我试着找到max,它跑得很快。但我不想总是使用max值。 < p>我不确定是否正确地理解了你的问题,但是如果计算速度与代码> mA.中位数有关

我有一个dtype=uint8的三维屏蔽数组,我想做一些类似于
arr.max(axis=-1)
,但不是总是选择max,我想(1)找到第一个(或最后一个)未屏蔽元素,(2)随机选择任意未屏蔽元素或(3)沿轴选择中值或模式,如
numpy.ma.median
scipy.stats.mstats.mode


这种方法(3)是我在理想世界中想要的,但它非常缓慢。然后我试着找到max,它跑得很快。但我不想总是使用max值。

< p>我不确定是否正确地理解了你的问题,但是如果计算速度与<>代码> mA.中位数有关,你可以考虑在数组的未屏蔽部分使用相应的“正常”NUMPY函数:

arr = ma.array(some_array)
med = ma.median(arr)                # masked array solution
med = np.median(arr.compressed())   # 'normal' function on unmasked part of arr  
除了压缩部分,这不应该比正常速度慢

更新我刚刚检查了两种方法的速度:使用压缩数组的“正常”函数的速度是屏蔽数组解决方案的5-15倍,这取决于屏蔽元素的分数…:-)