我想在python中实现以下计算:
使用 和
这里本身就是矩阵。 因此python应该计算矩阵时间向量乘法,其中向量元素是矩阵。这可能没有for循环吗?
答案 0 :(得分:3)
使用numpy:
In [1]: import numpy as np
In [2]: M1 = np.array([[1, 2], [3, 4]])
In [3]: M2 = np.array([[10, 20], [30, 40]])
In [4]: E = np.array([[1, 1], [1, -1]])
In [5]: v = np.array([M1, M2])
In [6]: np.tensordot(E, v, 1)
Out[6]:
array([[[ 11, 22],
[ 33, 44]],
[[ -9, -18],
[-27, -36]]])
答案 1 :(得分:0)
如果你熟悉爱因斯坦求和符号,你可以想象E下标为E_ij,v为v_jkl,更常见的是在@ steve-kern的例子中写np.tensordot:
In [6]: np.einsum('ij,jkl',E,v)