2016-09-01 4 views
0

로컬 최대 값을 감지하기 위해 scipy의 maximum_filter를 사용하고 싶지만 한 가지 문제가 있습니다. 필터가 모두 동일한 값에 함수를 적용하면 모든 값을 로컬 maximas로 반환하지만 반대 방향으로 가져야합니다.모든 동등한 값에 대해 최대 필터를 필터링하십시오.

예제 스크립트 :

import numpy as np 
import scipy.ndimage as sc 

ones_matrix = np.ones((6,6)) 

max_arr = (ones_matrix == sc.maximum_filter(ones_matrix, 3, mode = 'constant')) 
print max_arr 

이 모두 True를 반환합니다,하지만 난 그들이 거짓이 필요합니다. 어떻게해야합니까? 미리 감사드립니다! 이 하나

max_arr = (ones_matrix == sc.maximum_filter(ones_matrix, 3, mode = 'constant')) 

:

[[ True True True True True True] 
[ True True True True True True] 
[ True True True True True True] 
[ True True True True True True] 
[ True True True True True True] 
[ True True True True True True]] 
+1

을 당신은 무엇을'max_arr = (ones_matrix = sc.maximum_filter (ones_matrix, 3, 모드를 사용에 대해! = '상수'))'? – BPL

+0

행렬의 모든 값이 같으면 특별한 경우를 추가 할 수 있으므로'scipy.ndimage.maximum_filter' 대신'False'를 반환합니까? 나는 scipy가 "옳은"일을하고 있다고 생각합니다. – Frangipanes

+0

아마도 도움이 될까요? http://stackoverflow.com/questions/14859458/how-to-check-if-all-values-in-the-columns-of-a-numpy-matrix-are-the-same – Frangipanes

답변

1

당신은 당신의 문장을 바꿀 수

max_arr = (ones_matrix != sc.maximum_filter(ones_matrix, 3, mode = 'constant')) 
관련 문제