广播如何用于数字数组和块矩阵之间的乘法运算?
How does broadcasting work for multiplication between an array of numbers and a block matrix?
我有一个包含 n 个浮点数的数组 [a, b, ..., z]
和一个块矩阵 [II, X, Y, Z]
其中 II
、X
、Y
和 Z
都是2x2矩阵。
II = np.identity(2, dtype=complex)
X = np.array([[0, 1], [1, 0]], dtype=complex)
Y = np.array([[0, -1j], [1j, 0]], dtype=complex)
Z = np.array([[1, 0], [0, -1]], dtype=complex)
我的问题是如何将浮点数数组 [a, b, ..., z]
乘以块矩阵 [II, X, Y, Z]
以便它广播到:
[[a*II, a*X, a*Y, a*Z]
[b*II, b*X, b*Y, b*Z]
....................
[z*II, z*X, z*Y, z*Z]]
形状为 (n,4,2,2)
?
您只需确保尺寸匹配即可。这是一个例子:
mult = np.array([1,2,3,4,5])
conc = np.array([II,X,Y,Z])
res = conc.reshape(((1,)+conc.shape)) * mult.reshape((len(mult),1,1,1))
print(res.shape)
输出:
(5, 4, 2, 2)
我有一个包含 n 个浮点数的数组 [a, b, ..., z]
和一个块矩阵 [II, X, Y, Z]
其中 II
、X
、Y
和 Z
都是2x2矩阵。
II = np.identity(2, dtype=complex)
X = np.array([[0, 1], [1, 0]], dtype=complex)
Y = np.array([[0, -1j], [1j, 0]], dtype=complex)
Z = np.array([[1, 0], [0, -1]], dtype=complex)
我的问题是如何将浮点数数组 [a, b, ..., z]
乘以块矩阵 [II, X, Y, Z]
以便它广播到:
[[a*II, a*X, a*Y, a*Z]
[b*II, b*X, b*Y, b*Z]
....................
[z*II, z*X, z*Y, z*Z]]
形状为 (n,4,2,2)
?
您只需确保尺寸匹配即可。这是一个例子:
mult = np.array([1,2,3,4,5])
conc = np.array([II,X,Y,Z])
res = conc.reshape(((1,)+conc.shape)) * mult.reshape((len(mult),1,1,1))
print(res.shape)
输出:
(5, 4, 2, 2)