Учитывая двумерную матрицу 1 с и 0, например, для -
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
Я смог сделать 1
, посчитав непрерывные группы по 0, используя scipy.ndimage.measurements.label .
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
? Я хочу избежать использования петель.