2012-03-12 34 views
5

Trong numpy tôi có một mảng 2d 1s và 0s. Tôi cần tính toán một mảng mới (cùng kích thước) trong đó mỗi phần tử chứa khoảng cách đến gần nhất 1 từ điểm tương ứng trong mảng mặt nạ.Làm thế nào để tính toán hiệu quả khoảng cách đến gần nhất 1 trong mặt nạ trong numpy?

ví dụ:

a=np.array(
[[1,1,0], 
[1,0,0], 
[1,0,0]]) 

tôi cần b trông như thế này:

array([[0,0,1], 
     [0,1,1.41], 
     [0,1,2]]) 

PS. Tôi sẽ làm điều này trên các mảng rất lớn, vì vậy hiệu quả càng tốt! Cảm ơn!

Trả lời

9

Bạn đang tìm kiếm tương đương với MATLAB bwdist; hãy xem this SO question để biết thêm chi tiết. Câu trả lời ngắn gọn là sử dụng scipy.ndimage.morphology.distance_transform_edt.

+2

Tuyệt vời! Điều đó hoạt động tốt. Để hoàn thành mã hoạt động là b = scipy.ndimage.morphology.distance_transform_edt (1-a) –

Các vấn đề liên quan