给出一个1和0的2D矩阵,例如-
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
[0, 1, 1, 0, 0, 1, 0, 1, 0, 1],
[1, 1, 0, 0, 1, 1, 0, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 0, 1, 0, 0],
[1, 0, 0, 0, 1, 0, 1, 1, 0, 0],
[1, 0, 0, 0, 1, 0, 1, 1, 1, 0],
[1, 0, 0, 0, 1, 1, 0, 1, 1, 0]])
我希望计算某些统计数据:
1. Number of holes (no. of 0s with at least one 1 above): 12
2. Sum of hole depths (no. of 1s above holes, summed across columns): 0+3+(1+1)+1+0+3+(2+8)+(2+1)+(1+1)+3 = 27
3. Number of rows with at least one hole: 7
通过使用scipy.ndimage.measurements.label对连续的0组进行计数,我能够做到1
。
In[2]: scipy.ndimage.measurements.label(arr == 0,
structure=[[0,1,0],
[0,0,0],
[0,1,0]])[1] - arr.shape[1]
Out[2]: 12
如何找到2
和3
?我想避免使用循环。
答案 0 :(得分:0)
这是使用xor和{ '{"name":"abc"}': '' }
的一种方法:
np.where