广播如何在数字数组和块矩阵之间相乘?

时间:2019-07-19 17:58:11

标签: python arrays numpy numpy-broadcasting

我有一个n个浮点数组,例如while True:和一个块矩阵[a, b, ..., z],其中[II, X, Y, Z]IIXY都是2x2矩阵。

Z

我的问题是如何将浮点数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]]

1 个答案:

答案 0 :(得分:1)

您只需要确保尺寸匹配即可。这是一个示例:

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)