2017-06-01 57 views
0

可以說我有一個二進制矩陣,我怎麼找到1(或0)值最遠的北,南,東,西的(row,col)位置。矩陣中最遠的位置,具有一定的值

這可以很容易地轉移到在非二進制矩陣中找到具有特定值的相同最遠區域嗎?

+0

距離哪裏最遠?從矩陣的中心也許? – Divakar

+0

最北=最北端(無論東或西),其中有1或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] 

在第一個和最後一個拿到程度:

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

對於非布爾矩陣M你需要做一些比較將輸出一個布爾矩陣,如:

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