首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个矩阵逐列求和

两个矩阵逐列求和
EN

Stack Overflow用户
提问于 2018-02-15 23:51:00
回答 3查看 213关注 0票数 0

我有两个矩阵:

代码语言:javascript
复制
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

诸若此类。

有什么聪明的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-16 00:09:26

使用numpy广播怎么样?

代码语言:javascript
复制
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)
票数 5
EN

Stack Overflow用户

发布于 2018-02-16 00:09:34

numpy转置你的第二个矩阵,然后做一个元素相加。

代码语言:javascript
复制
mx2t = np.transpose(mx2)
motot = np.add(mx1, mx2t)

然后使用带有轴参数的numpy对列求和。(我假设对于您的示例,您最终将得到一个1x3矩阵,而不是3x3矩阵,因为我不清楚您将如何计算元素2,2)。

票数 0
EN

Stack Overflow用户

发布于 2018-02-16 00:38:54

我认为这将做你想要的,但我不确定它的效率有多高,它是否能很好地处理你的大数据。

代码语言:javascript
复制
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创建所有的行和列对。将这些对求和。然后根据原始形状重塑形状。我希望这将是有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48811196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档