2017-06-01 36 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]