2013-01-13 25 views
5

Tôi hiện đang tìm cách xây dựng một vài cây kd để truy vấn nhanh một số dữ liệu n chiều. Tuy nhiên, tôi đang gặp một số vấn đề với các thuật toán cây scipy KDscipy kdtree với dữ liệu meta

dữ liệu của tôi bao gồm id -> {data: somedata, coordinate: x, y}

Tôi muốn để có thể truy vấn dựa trên tọa độ và k-khu vực gần id người hàng xóm cũng như nhận được sự sửa chữa bán kính neghbour của id. Đánh giá từ việc thực hiện scipy của KDTree và cKDtree, điều này không có sẵn.

Các tùy chọn khác của tôi là viết cây KD của riêng tôi, điều đó sẽ không tuyệt vời như thế bởi vì tôi chỉ là tôi, hoặc ...?

Trả lời

4

Từ khi chơi xung quanh với KDTree, có vẻ như nó khẳng định về việc có một mảng có khối lượng 2D như đối tượng được gán cho hàm tạo của nó, nhưng API trả về các chỉ mục vào mảng đó. Hơn nữa, bạn không thể chỉ khỉ vá dữ liệu của bạn vào các tọa độ riêng lẻ.

Nhưng, bạn vẫn có thể tận dụng lợi thế của sự can đảm của KDTree. Bạn cần chia đối tượng của bạn thành một danh sách song song của các đối tượng dữ liệu đính kèm và một mảng các tọa độ mà KDTree thấy. Khi nó nói, trả về điểm thứ ba cho một số tìm kiếm, bạn biết rằng tương ứng với chỉ số thứ 3 trong danh sách đối tượng dữ liệu đính kèm của bạn. Chắc chắn, nó khó xử hơn API cung cấp cho bạn một chức năng quan trọng cung cấp tọa độ từ một đối tượng tùy ý, giống như cách bạn có thể chuyển khóa cho chức năng sắp xếp python, nhưng tốt hơn nhiều so với việc triển khai thực hiện KDTree của riêng bạn .

+0

Tuyệt vời! Có vẻ như tôi hiểu lầm tài liệu một chút. Tất cả đều tốt – Pwnna

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