Tôi có một mảng 2 chiều:gần Neighbor Tìm kiếm: Python
MyArray = array([6588252.24, 1933573.3, 212.79, 0, 0],
[6588253.79, 1933602.89, 212.66, 0, 0],
etc...)
Hai yếu tố đầu tiên MyArray[0]
và MyArray[1]
là tọa độ X và Y trong những điểm.
Đối với mỗi phần tử trong mảng, tôi muốn tìm các Cách nhanh nhất để trở lại hàng xóm gần nhất đơn của nó trong một bán kính X đơn vị. Chúng tôi giả định đây là không gian 2D.
cho phép nói ví dụ này X = 6
.
Tôi đã giải quyết vấn đề bằng cách so sánh mọi phần tử với mọi phần tử khác, nhưng việc này mất 15 phút hoặc lâu hơn khi danh sách của bạn dài 22k. Chúng tôi hy vọng cuối cùng sẽ chạy trên danh sách khoảng 30 triệu điểm.
Tôi đã đọc về cây K-d và hiểu khái niệm cơ bản, nhưng đã gặp sự cố khi hiểu cách viết kịch bản.
"Cây Kt" là gì? Bạn có nghĩa là "cây k-d"? Đối với các điểm hai chiều, bạn chỉ cần [quadtree] (http://en.wikipedia.org/wiki/Quadtree). Có một câu hỏi trước đó tìm kiếm các triển khai quadtree trong Python: http://stackoverflow.com/questions/6060302/pure-python-quadtree-implementation –
Cảm ơn bạn! Tôi có nghĩa là một cây k-d. Tôi sẽ tra một cây quad. – Dlinet
Có triển khai thực hiện cây k-d trong mô-đun ['scipy.spatial'] (http://docs.scipy.org/doc/scipy/reference/spatial.html) –