数组乘以广播
Multiplying arrays with broadcasting
我有一个 mxn A 矩阵和一个 nxr B 矩阵,我想以特定方式将它们相乘以获得 mxr 矩阵。我想将 A 的第 i 列中的每个元素作为标量乘以 B 的第 i 行并对 n 个矩阵求和
例如
a = [[0, 1, 2],
[3, 4, 5],
b = [[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11]]
产品将是
a*b = [[0, 0, 0, 0], + [[4, 5, 6, 7], + [[16, 18, 20, 22], = [[20, 23, 26, 29],
[0, 3, 6, 9]] [16, 20, 24, 28]] [40, 45, 50, 55]] [56, 68, 80, 92]]
我不能使用任何循环,所以我很确定我必须使用广播,但我不知道如何使用。感谢任何帮助
您的输入矩阵分别是 (2, 3) 和 (3, 4) 形状,您想要的结果是 (2, 4) 形状。
您需要的只是两个矩阵的 dot 乘积
a = np.array([[0, 1, 2],
[3, 4, 5]])
b = np.array([[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11]])
print (np.dot(a,b))
# array([[20, 23, 26, 29],
# [56, 68, 80, 92]])
我有一个 mxn A 矩阵和一个 nxr B 矩阵,我想以特定方式将它们相乘以获得 mxr 矩阵。我想将 A 的第 i 列中的每个元素作为标量乘以 B 的第 i 行并对 n 个矩阵求和
例如
a = [[0, 1, 2],
[3, 4, 5],
b = [[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11]]
产品将是
a*b = [[0, 0, 0, 0], + [[4, 5, 6, 7], + [[16, 18, 20, 22], = [[20, 23, 26, 29],
[0, 3, 6, 9]] [16, 20, 24, 28]] [40, 45, 50, 55]] [56, 68, 80, 92]]
我不能使用任何循环,所以我很确定我必须使用广播,但我不知道如何使用。感谢任何帮助
您的输入矩阵分别是 (2, 3) 和 (3, 4) 形状,您想要的结果是 (2, 4) 形状。
您需要的只是两个矩阵的 dot 乘积
a = np.array([[0, 1, 2],
[3, 4, 5]])
b = np.array([[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11]])
print (np.dot(a,b))
# array([[20, 23, 26, 29],
# [56, 68, 80, 92]])