У меня есть массив, содержащий метки. Я хотел бы рассчитать число для каждой метки в зависимости от ее размера и ограничивающей рамки. Как я могу написать это более эффективно, чтобы его можно было использовать на больших массивах (~ 15000 меток)?
A = array([[ 1, 1, 0, 3, 3],
[ 1, 1, 0, 0, 0],
[ 1, 0, 0, 2, 2],
[ 1, 0, 2, 2, 2]] )
B = zeros( 4 )
for label in range(1, 4):
# get the bounding box of the label
label_points = argwhere( A == label )
(y0, x0), (y1, x1) = label_points.min(0), label_points.max(0) + 1
# assume I've computed the size of each label in a numpy array size_A
B[ label ] = myfunc(y0, x0, y1, x1, size_A[label])