tôi có một danh sách 300000 danh sách (sợi track), trong đó mỗi bài hát là danh sách (x, y, z) tuples/phối:Cách hiệu quả hơn để đếm giao lộ?
tracks=
[[(1,2,3),(3,2,4),...]
[(4,2,1),(5,7,3),...]
...
]
Tôi cũng có một nhóm các mặt nạ, nơi mỗi mặt nạ được định nghĩa là một danh sách các (x, y, z) tuples/phối:
mask_coords_list=
[[(1,2,3),(8,13,4),...]
[(6,2,2),(5,7,3),...]
...
]
tôi cố gắng để tìm kiếm, cho tất cả các cặp có thể có của mặt nạ:
- các số bản nhạc cắt nhau cặp mặt nạ-mặt nạ (để tạo ra một conn ma trận ectivity)
- các tập hợp con của ca khúc đó cắt nhau mặt nạ, để thêm 1 cho mỗi (x, y, z) phối hợp cho mỗi ca khúc trong tập hợp con (để tạo ra một "mật độ" hình ảnh)
tôi hiện đang làm phần 1 như sau:
def mask_connectivity_matrix(tracks,masks,masks_coords_list):
connect_mat=zeros((len(masks),len(masks)))
for track in tracks:
cur=[]
for count,mask_coords in enumerate(masks_coords_list):
if any(set(track) & set(mask_coords)):
cur.append(count)
for x,y in list(itertools.combinations(cur,2)):
connect_mat[x,y] += 1
và phần 2 như sau:
def mask_tracks(tracks,masks,masks_coords_list):
vox_tracks_img=zeros((xdim,ydim,zdim,len(masks)))
for track in tracks:
for count,mask in enumerate(masks_coords_list):
if any(set(track) & set(mask)):
for x,y,z in track:
vox_tracks_img[x,y,z,count] += 1
Sử dụng bộ để tìm nút giao thông đã tăng tốc quá trình này tăng lên đáng kể nhưng cả hai phần stil Tôi mất hơn một giờ khi tôi có danh sách 70 mặt nạ trở lên. Có cách nào hiệu quả hơn để thực hiện việc này hơn là lặp lại cho mỗi bản nhạc không?
Tất cả các câu trả lời dường như là những cải tiến cận biên, nhưng tôi nghĩ bạn cần nhiều hơn thế. – McPherrinM
Nếu bạn có thể đăng một tập dữ liệu mẫu và các câu trả lời đúng trong một con nhộng ở đâu đó, bạn có thể nhận được nhiều trợ giúp hơn. –
Tôi có thấy rằng các giao lộ chỉ được định nghĩa là hai bộ tọa độ giống nhau hay không, chứ không phải là các đường giữa các tọa độ giao nhau? – Svante