2017-06-01 14 views
0

私はバイナリ行列を持っていますが、(または0)の値を持つ最も北、南、東、西の(row,col)の位置を見つけるにはどうすればいいですか?特定の値を持つ行列の最も遠い位置

これは、非バイナリ行列で特定の値を持つ同じ最も離れた領域を見つけることに簡単に移行できますか?

+0

どこから最も遠いですか?行列の中心から多分? – Divakar

+0

遠い北=最北点(かかわらず、東または西)東遠い1または0 がある1または0 遠い南=最も南のポイント(かかわらず、東または西)があります= 最も遠い西=ほとんどの西側の点(北にも南にも関係なく)には、1または0があります。 – obtmind

+0

「北」または「北」の複数の地点を持つことができます。同じ列にあるもの。それで、どちら? – Divakar

答えて

1

Trueがある列または行のインデックスを参照するだけで済みます。

NS = np.where(np.any(M, axis=0))[0] 
WE = np.where(np.any(M, axis=1))[0] 

乗り、最初と最後のエクステントを取得する:あなたは、いくつかの比較を行う必要があると思いますM非ブール行列の場合

N = NS[0] 
S = NS[-1] 
W = WE[0] 
E = WE[-1] 

をその意志を出力ブール行列、のような:

NS = np.where(np.any(M > 0, axis=0))[0] 
WE = np.where(np.any(M > 0, axis=1))[0] 
関連する問題