Tôi đang tìm cách thực hiện thao tác sau trong python (numpy).Một phép nhân ma trận 3D không gian trong python
Matrix A is M x N x R
Matrix B is N x 1 x R
Ma trận nhân AB = C, trong đó C là ma trận M x 1 x R. Về cơ bản, mỗi lớp M x N của A (R của chúng) là ma trận nhân được độc lập với mỗi véc tơ N x 1 trong B. Tôi chắc chắn đây là một lớp lót. Tôi đã cố gắng sử dụng tensordot(), nhưng tôi dường như đã cho tôi câu trả lời mà tôi không mong đợi.
Tôi đã lập trình trong Igor Pro gần 10 năm rồi, và bây giờ tôi đang cố chuyển đổi các trang của nó sang python.
Cảm ơn bạn đã liên hệ lại với tôi quá nhanh. Ít nhất, nó sẽ giúp tôi bắt đầu. Phần lớn các mã mà tôi sẽ cố gắng viết là ma trận hoạt động theo định hướng ... vì vậy tôi thực sự nên cố gắng hiểu những gì đang xảy ra ở đây. Điều đó đang được nói, có hai phần để mã gây nhầm lẫn cho tôi. Đầu tiên là gọi "trục" bên trong hàng chục. Tôi đang bối rối về những gì mà thực sự làm, trong đó, tôi sẽ mong đợi rằng một x b chỉ nên cung cấp cho bạn c (như cách tôi mô tả ở trên) mà không tuyên bố bất cứ điều gì đặc biệt. Có lẽ một khi tôi hiểu điều đó, tôi sẽ thấy tại sao nó là cần thiết để sử dụng .diagonal. – Jason
Đó là thông minh ... Tôi không biết phải mất bao lâu để làm điều gì đó như thế này (có vẻ như bạn tạo một trục mới để nhân tổng hợp, sau đó về cơ bản tái kết hợp sau) Tôi thực sự đánh giá cao thời gian của bạn, cảm ơn nhiều! – Jason
Dễ dàng nghĩ về điều này nếu thứ nguyên đầu tiên là danh sách ma trận (R), và thứ hai là kích thước ma trận chung (N) tức là hình dạng của một (4, 3, 2) và b là (4 , 3, 1). Phép toán nhân sau đó trở thành (a * b) .sum (trục = 1). (a * b) là phép nhân của các hàng và cột của mỗi phần tử trong ma trận, bạn cần tổng hợp mỗi hàng để lấy ma trận cuối cùng. Cũng giống như bạn nhiều ma trận bằng tay. –