假设我有二进制矩阵,如何找到最远的北,南,东和西的(row,col)
位置,其值为1
(或0
)
这可以很容易地转移到在非二进制矩阵中找到具有特定值的相同最远区域吗?
答案 0 :(得分: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]