两列矩阵的总和

时间:2018-02-15 15:51:00

标签: python numpy sum

我有两个矩阵:

mx1 = np.matrix([[2,9,9],[2,5,8],[7,2,9]])

[[2 9 9]
 [2 5 8]
 [7 2 9]]

mx2 = np.matrix([[7,1,3],[5,8,2],[6,9,5]])

[[7 1 3]
 [5 8 2]
 [6 9 5]]

我想逐行地执行类似矩阵产品的事情,但总和。

即,得到的矩阵元素[1,1]应计算为:

(2 + 7)+(9 + 5)+(9 + 6)= 38

元素[1,2]:

(2 + 1)+(9 + 8)+(9 + 9)= 38

等等。

有一些聪明的方法吗?

3 个答案:

答案 0 :(得分:5)

如何使用numpy广播?

mx1 = np.matrix([[2,9,9],[2,5,8],[7,2,9]])
mx2 = np.matrix([[7,1,3],[5,8,2],[6,9,5]])
res = np.sum(mx1, axis = 1) + np.sum(mx2, axis = 0)

答案 1 :(得分:0)

numpy转置你的第二个矩阵,然后进行元素添加。

mx2t = np.transpose(mx2)
motot = np.add(mx1, mx2t)

然后使用带有axis参数的numpy来对列进行求和。 (我假设你的例子,你最终会得到1x3矩阵,而不是3x3矩阵,因为我不清楚你将如何计算元素[2,2])。

答案 2 :(得分:0)

我认为这会做你想要的,但我不确定它的效率如何,并且它对你的大数据有效。

import itertools

m, _ = np.shape(mx1)
_, n = np.shape(mx2)

r = np.array(list(map(np.sum, itertools.product(mx1, mx2.T)))).reshape(m, n)

要解决此问题:使用itertools.product创建所有行和列对。总结这些对。然后根据原始形状重塑。我希望这会有用。