我有一个对角线块矩阵,我想要每个块的坐标(行,列)
a = np.zeros((25,18), dtype=int)
a[2:8,:6]=1
a[8:13,6:12]=1
a[13:15,12:14]=1
a[15:20,14:]=1
和输出
[(2, 0), (8, 6), (13, 12), (15, 14)]
谢谢!
如您的示例中所示,如果每一列都包含一个或其他块,则可以通过扫描每一列中的第一个非零条目并跟踪相应的行来获取每个块的坐标:
In [1]: import numpy as np
In [2]: a = np.zeros((25,18), dtype=int)
In [3]: a[2:8,:6]=1
In [4]: a[8:13,6:12]=1
In [5]: a[13:15,12:14]=1
In [6]: a[15:20,14:]=1
In [7]: rows = set()
In [8]: blocks = []
In [9]: for col in range(a.shape[1]):
row = np.argmax(a[:,col])
if row not in rows:
rows.add(row)
blocks.append((row, col))
....:
In [10]: blocks
Out[10]: [(2, 0), (8, 6), (13, 12), (15, 14)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句