这是一个简单的问题,但是我对所涉及的大小感到困惑.
使用NumPy,我有一个3维数组,形状=(10,100,100).
(我认为它是由10个“矩阵”组成的np.ndarray,每个矩阵的形状为100 x 100,即
arr1 = [M1 M2 M3....M10]
其中M1.shape =(100,100),M2.shape =(100,100),…
我还有第二个数据数组,称为“ arrB”,它是arrB.shaped(100,).我的目标是使用这些numpy数组进行矩阵乘法,即(arrB.T)* arr1 *(arrB),从而得到一个整数.使用numpy数组,此操作应使用np.dot()完成
op1 = np.dot(arr1, arrB)
op2 = np.dot((arrB.T), op1)
要么
endproduct = np.dot((arrB.T), np.dot(arr1, arrB) )
但是,这不起作用.我收到一个错误:
ValueError: shapes (100,) and (10,100) not aligned: 100 (dim 0) != 10 (dim 0)
如果我一次对一个“矩阵” M#进行操作,则可以执行此操作,即
element1 = arr1[0]
end = np.dot((arrB.T), np.dot(element1, arrB) )
在不拼接原始数组,执行操作并再次追加的情况下,如何在原始数组arr1上执行这些操作以导致
result = [(arrB.T)*arr1[0]*(arrB) (arrB.T)*arr1[1]*(arrB) (arrB.T)*arr1[2]*(arrB) ...
....(arrB.T)*arr1[9]*(arrB) ]