Tôi đang tìm cách nhanh chóng để tính tổng n sản phẩm bên ngoài.Python - cách nhanh chóng để tổng hợp các sản phẩm bên ngoài?
Về cơ bản, tôi bắt đầu với hai ma trận được tạo ra từ phân phối chuẩn - có n vectơ với các yếu tố v:
A = np.random.normal(size = (n, v))
B = np.random.normal(size = (n, v))
Những gì tôi muốn là để tính toán các sản phẩm ngoài của mỗi vector kích thước v A và B và tổng hợp chúng lại với nhau.
Lưu ý rằng A * B.T
không hoạt động - A có kích thước n x v trong khi B có kích thước v x n.
Điều tốt nhất tôi có thể làm là tạo vòng lặp nơi các sản phẩm bên ngoài được xây dựng, sau đó tổng hợp lại sau. Tôi có nó như vậy:
outers = np.array([A[i] * B[i].T])
này tạo ra một n x v x v mảng (vòng lặp nằm trong phạm vi hiểu biết danh sách, mà sau đó được chuyển thành một mảng), mà tôi sau đó có thể tổng hợp lại với nhau bằng cách sử dụng np.sum(outers, axis = 0)
. Tuy nhiên, điều này là khá chậm, và tôi đã tự hỏi nếu có một chức năng vectorized tôi có thể sử dụng để tăng tốc độ này lên.
Nếu có ai có lời khuyên nào, tôi thực sự sẽ đánh giá cao điều đó!
einsum hoạt động đẹp mắt. Cảm ơn! – Adam