Как повысить эффективность этого цикла numpy

У меня есть массив, содержащий метки. Я хотел бы рассчитать число для каждой метки в зависимости от ее размера и ограничивающей рамки. Как я могу написать это более эффективно, чтобы его можно было использовать на больших массивах (~ 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])
8
задан ajwood 23 November 2011 в 16:52
поделиться