Tôi quan tâm đến việc tính toán một mảng NumPy lớn. Tôi có một mảng lớn A
có chứa một loạt các số. Tôi muốn tính toán tổng các kết hợp khác nhau của những con số này. Cấu trúc của dữ liệu như sau:Vectorize phép nhân NumPy lớn
A = np.random.uniform(0,1, (3743, 1388, 3))
Combinations = np.random.randint(0,3, (306,3))
Final_Product = np.array([ np.sum(A*cb, axis=2) for cb in Combinations])
Câu hỏi của tôi là nếu có cách thanh lịch và hiệu quả hơn để tính toán điều này? Tôi thấy khó chịu khi làm việc với np.dot()
khi có mảng 3-D.
Nếu được, hình dạng Final_Product
lý tưởng nên là (3743, 306, 1388). Hiện tại, Final_Product
có hình dạng (306, 3743, 1388), vì vậy tôi có thể định hình lại để đến đó.
Cảm ơn! Tôi cũng tìm thấy câu trả lời của @ajcr rất hữu ích. Sử dụng tensor tôi giảm một nửa thời gian sử dụng trong 'np.einsum' – Julien
@Julien tôi thích giải pháp của ajcr! Tôi nghĩ đó là một phiên bản ngắn gọn về những gì 'dấu chấm' làm ở đây. – Divakar