Ma trận khoảng cách Python từ tọa độ

Tôi có một danh sách tọa độ xyz của các điểm khác nhau từ tệp PDB được gán cho biến x. Đây là một đoạn của những gì nó trông giống như

[ 8.721 15.393 22.939]
[11.2   13.355 25.025]
[11.045 15.057 28.419]
[13.356 13.814 31.169]
[12.54  13.525 34.854]
[14.038 15.691 37.608]
[16.184 12.782 38.807]
[17.496 12.053 35.319]
[18.375 15.721 34.871]
[20.066 15.836 38.288]
[22.355 12.978 37.249]
[22.959 14.307 33.724]
[24.016 17.834 34.691]
[26.63  16.577 37.161]
[29.536 18.241 35.342]
[27.953 21.667 35.829]

Tôi muốn sử dụng những điểm này để tính toán ma trận khoảng cách. Tôi đã cố gắng sử dụng hàm distance_matrix của SciPy, tuy nhiên nó dường như không hỗ trợ tọa độ xyz, chỉ có tọa độ x và y. Có cách nào nhanh chóng để tính toán ma trận khoảng cách này theo cách thủ công không?

pdb trăn • 3. 3k lượt xem

THÊM NHẬN XÉT • đã cập nhật 4. 1 năm trước bởi Joe 20k • đã viết 4. 1 năm trước bởi westin. kosater ▴ 70

1

Vào chế độ chỉnh sửa

Bạn có thể làm điều này trong R với gói rpdb dễ dàng hơn nhiều. Ngoài ra, tôi khuyên bạn nên giữ tên nguyên tử được đính kèm

THÊM TRẢ LỜI • 4. 1 năm trước bởi Michael Dondrup 52k

0

Vào chế độ chỉnh sửa

Tôi đồng ý với Michael rằng có lẽ tốt nhất là giữ cho nó 'nguyên vẹn' với tên nguyên tử, v.v., nhưng thứ bạn đang tìm kiếm là khoảng cách Euclide 3D

Hãy xem. https. // stackoverflow. com/câu hỏi/1401712/làm thế nào-có thể-the-euclid-khoảng cách-được-tính-với-numpy

THÊM TRẢ LỜI • 4. 1 năm trước bởi Joe 20k

2

Vào chế độ chỉnh sửa

4. 1 năm trước

joe 20k

Bỏ qua nhận xét trước đó của tôi, tôi nghĩ đây là một cách để làm điều đó, mặc dù tôi chưa kiểm tra để đảm bảo toán học là chính xác. Những con số trông ổn mặc dù tôi nghĩ

Tôi đã phải định dạng lại một chút dữ liệu đầu vào của bạn để dễ sử dụng hơn một chút

Dữ liệu đầu vào

8.721 15.393 22.939
11.2 13.355 25.025
11.045 15.057 28.419
13.356 13.814 31.169
12.54 13.525 34.854
14.038 15.691 37.608
16.184 12.782 38.807
17.496 12.053 35.319
18.375 15.721 34.871
20.066 15.836 38.288
22.355 12.978 37.249
22.959 14.307 33.724
24.016 17.834 34.691
26.63 16.577 37.161
29.536 18.241 35.342
27.953 21.667 35.829

Mã số

import numpy
import sys
import itertools

with open[sys.argv[1], 'r'] as ifh:
    coords = [numpy.array[line.rstrip['\n'].split[' ']] for line in ifh]

fl_coords = [arr.astype[float] for arr in coords]

for each in itertools.combinations[fl_coords,2]:
    print['{} - {} = {}'.format[each[0],each[1], numpy.linalg.norm[each[0]-each[1]]]]

Một số ví dụ đầu ra

[  8.721  15.393  22.939] - [ 11.2    13.355  25.025] = 3.8275685493534914
[  8.721  15.393  22.939] - [ 11.045  15.057  28.419] = 5.961901710025082
[  8.721  15.393  22.939] - [ 13.356  13.814  31.169] = 9.576500717903174
[  8.721  15.393  22.939] - [ 12.54   13.525  34.854] = 12.650747408750203
[  8.721  15.393  22.939] - [ 14.038  15.691  37.608] = 15.60573144713185
[  8.721  15.393  22.939] - [ 16.184  12.782  38.807] = 17.728708751626556
[  8.721  15.393  22.939] - [ 17.496  12.053  35.319] = 15.537716209276061
[  8.721  15.393  22.939] - [ 18.375  15.721  34.871] = 15.351870374648167
[  8.721  15.393  22.939] - [ 20.066  15.836  38.288] = 19.091806488648473

Điều này sẽ cung cấp cho bạn mọi thứ ở định dạng 'dài' cho tất cả các khoảng cách điểm theo cặp, tôi không chắc bạn muốn tất cả so với tất cả hay chỉ tất cả so với một, nhưng sẽ không mất nhiều thời gian để thao tác điều này trong một ma trận

API ma trận khoảng cách cung cấp khoảng cách và thời gian di chuyển cho ma trận điểm xuất phát và điểm đến, đồng thời bao gồm các hàng chứa các giá trị durationdistance cho mỗi cặp. Ma trận khoảng cách có sẵn trong một số hình thức

  • như một API độc lập
  • như một phần của API JavaScript Bản đồ phía máy khách
  • để sử dụng phía máy chủ như một phần của Thư viện máy khách cho Dịch vụ web của Google Maps

Bạn có thể làm gì với API ma trận khoảng cách?

API trả về thông tin dựa trên tuyến đường được đề xuất giữa điểm bắt đầu và điểm kết thúc. Bạn có thể yêu cầu dữ liệu khoảng cách cho các chế độ di chuyển khác nhau, yêu cầu dữ liệu khoảng cách theo các đơn vị khác nhau như km hoặc dặm và ước tính thời gian di chuyển khi tham gia giao thông

Để biết thêm ví dụ, hãy xem hướng dẫn dành cho nhà phát triển API ma trận khoảng cách, cung cấp phần giới thiệu về cách sử dụng API và tài liệu tham khảo về các thông số có sẵn

Tại sao sử dụng Ma trận khoảng cách?

Sử dụng API ma trận khoảng cách khi giải pháp của bạn yêu cầu khoảng cách và thời gian di chuyển giữa một danh sách lớn các điểm xuất phát-điểm đến

Nếu bạn muốn sử dụng chức năng Ma trận khoảng cách và nhận tuần tự hóa các yêu cầu và giải tuần tự hóa các phản hồi, thử lại tự động và một số xác thực yêu cầu của ứng dụng khách, hãy thử một trong các thư viện ứng dụng khách của chúng tôi. Nếu bạn đã sử dụng API JavaScript của Maps, hãy sử dụng dịch vụ Ma trận khoảng cách để nhận chức năng của API ma trận khoảng cách

Ghi chú. Dịch vụ này không trả lại thông tin tuyến đường chi tiết. Để có được điều đó, hãy chuyển điểm gốc và điểm đến mong muốn cho API Chỉ đường.

Cách sử dụng Ma trận khoảng cách

Truy cập API ma trận khoảng cách thông qua giao diện HTTP, với các yêu cầu được tạo dưới dạng chuỗi URL, chuyển nguồn gốc và đích cùng với khóa API của bạn

Ma trận khoảng cách được tính như thế nào?

Ma trận khoảng cách giữa các hình, D∈R+N×N, được tính toán bằng cách sử dụng Mục nhập liền kề Khoảng cách giữa các bản đồ tự chức năng, trong đó N là số lượng hình . [94]Dij=DAE[Ci,Cj]i,j∈{1… N}.

Ma trận khoảng cách theo cặp là gì?

Trong toán học, khoa học máy tính và đặc biệt là lý thuyết đồ thị, ma trận khoảng cách là ma trận vuông [mảng hai chiều] chứa khoảng cách, được lấy theo cặp, giữa các phần tử của một tập hợp . Tùy thuộc vào ứng dụng liên quan, khoảng cách được sử dụng để xác định ma trận này có thể hoặc không phải là số liệu. . Depending upon the application involved, the distance being used to define this matrix may or may not be a metric.

Ma trận khoảng cách trong khai thác dữ liệu là gì?

Ma trận khoảng cách là bảng hiển thị khoảng cách giữa các cặp đối tượng . Ví dụ: trong bảng bên dưới, chúng ta có thể thấy khoảng cách giữa A và B là 16, giữa A và C là 47, v.v. Theo định nghĩa, khoảng cách của một đối tượng so với chính nó, được hiển thị trong đường chéo chính của bảng, là 0.

Chủ Đề