Hãy tưởng tượng có mảng 2 NumPy:Có sản phẩm chấm có dấu chấm/scipy không, chỉ tính các mục chéo của kết quả?
> A, A.shape = (n,p)
> B, B.shape = (p,p)
Điển hình p là một số nhỏ hơn (p < = 200), trong khi n có thể tùy tiện lớn.
Tôi đang làm như sau:
result = np.diag(A.dot(B).dot(A.T))
Như bạn thấy, tôi chỉ giữ lại các mục chéo n, tuy nhiên có một trung gian (n x n) mảng tính từ mà chỉ có các mục chéo được lưu giữ.
Tôi muốn có một hàm như diag_dot(), chỉ tính toán các mục nhập đường chéo của kết quả và không cấp phát bộ nhớ hoàn chỉnh.
Một kết quả sẽ là:
> result = diag_dot(A.dot(B), A.T)
Có một chức năng premade như thế này và điều này có thể được thực hiện một cách hiệu quả mà không cần phân bổ (n x n) mảng trung gian?
+1 đại số thông minh là luôn luôn tốt hơn so với thuật toán phức tạp. – Jaime