2017-11-23 4 views
1

내가numpy에 masked_less와 (과) 같은 masked_max가 있습니까?

np.ma.max(arr, axis=(-1,-2)) 

을 시도

[[[False True] 
    [False False]]] 

# or an equivalent with -- and max value in place 

에서

[[[ 0.5488135 0.71518937] 
    [ 0.60276338 0.54488318]]] 

얻을

masked_arr = np.ma.masked_max(arr, axis=(-1,-2)) 

의 상응하는 무엇입니까하지만 np.max 같은 단지 값을 반환 , 및 n 마스크를 쳐라. 어떻게해야합니까?

답변

2

내가 당신도 그것에 대해 np.ma를 사용할 필요가 있다고 생각하지 않습니다, 당신은 그냥 할 수있는

mask = np.isclose(x, x.max((-1, -2), keepdims = True)) 

np.isclose을 사용하고 부두에는 ==을 사용하지 않아야합니다. 그러나

mask = x == x.max((-1, -2), keepdims = True) 

은 정수 또는 다른 유형이있어 ==이 안전 할 때 작동합니다.

+0

아아아, 나는 네가 거기에서'keepdims'로 한 것을 본다. 끝내 :) –

1

numpy.ma.masked_less과 마찬가지로 numpy.ma.masked_greater입니다.

하지만 당신은

import numpy 
x = numpy.array([ 
    [0.54881350, 0.71518937], 
    [0.60276338, 0.54488318] 
]) 

mask = numpy.ma.masked_greater_equal(x, x.max()).mask 
print(mask) 

numpy.ma.masked_greater_equal를 원하고 내가 얻을 :

[[False True] 
[False False]] 
관련 문제