簡體   English   中英

numpy中三維矩陣的乘法

[英]multiplication of 3-dimensional matrix in numpy

我想我昨天問了一個錯誤的問題 我真正想要的是2x2xN A兩個2x2xN矩陣AB

C[:,:,i] = dot(A[:,:,i], B[:,:,i])

例如,如果我有一個矩陣

A = np.arange(12).reshape(2, 2, 3)

如何通過上述定義得到C = A x A 是否有內置函數來執行此操作?


此外,如果我將A (shape 2x2xN)B (shape 2x2x1, instead of N) ,我想得到

C[:,:,i] = dot(A[:,:,i], B[:,:,1])

嘗試使用numpy.einsum ,它有一點學習曲線,但它應該給你你想要的。 這是一個讓你入門的例子。

import numpy as np

A = np.random.random((2, 2, 3))
B = np.random.random((2, 2, 3))

C1 = np.empty((2, 2, 3))
for i in range(3):
    C1[:, :, i] = np.dot(A[:, :, i], B[:, :, i])

C2 = np.einsum('ijn,jkn->ikn', A, B)
np.allclose(C1, C2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM