2016-08-13 317 views
1

我有一個0和1(512 x 512)的numpy數組。我想計算1的形狀centroid(它們都連接在陣列中間的一個圓形斑點中)。快速計算二進制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