2016-08-13 2 views
1

У меня есть массив с числами 0 и 1 (512 x 512). Я бы хотел рассчитать centroid формы 1 (все они соединены в один круговой блок в середине массива).Быстрое вычисление центроида двоичной матрицы numpy

for i in xrange(len(array[:,0])): 
    for j in xrange(len(array[0,:])): 
     if array[i,j] == 1: 
      x_center += i 
      y_center += j 

count = (aorta == 1).sum() 
x_center /= count 
y_center /= count 

Есть ли способ ускорить мой расчет выше? Могу ли я использовать numpy.where() или что-то еще? Существуют ли какие-либо функции python для этого параллельно?

ответ

1

Вы можете заменить два вложенных цикла, чтобы получить координаты центральной точки, как так -

x_center, y_center = np.argwhere(array==1).sum(0)/count 
Смежные вопросы