如何在Python中对行列数不同的矩阵求和(无需自定义函数)
不等行数二维矩阵的求和实现方法
问题说明
我有两个二维矩阵:[[1,2],[0,0]] 和 [[4,8],[0,0],[5,6]],希望求和得到矩阵 [[5,10],[0,0],[5,6]]。已知numpy直接执行m1+m2会因形状不匹配报错,请问无需编写自定义函数的最简单实现方法是什么?
解决方案
利用numpy的np.pad函数将行数较少的矩阵补全为与另一矩阵相同的形状(缺失行补0),再执行逐元素相加即可:
import numpy as np m1 = np.array([[1, 2], [0, 0]]) m2 = np.array([[4, 8], [0, 0], [5, 6]]) # 补全m1的行数至与m2一致,缺失行填充0 m1_padded = np.pad(m1, ((0, m2.shape[0] - m1.shape[0]), (0, 0)), mode='constant') res = m1_padded + m2 print(res) # 输出结果: # [[ 5 10] # [ 0 0] # [ 5 6]]
原理说明
numpy的数组相加要求形状完全匹配,通过np.pad给m1补充1行全0元素后,m1_padded的形状变为(3,2),与m2一致,此时就能直接执行逐元素相加,得到目标结果。
内容的提问来源于stack exchange,提问作者Matvey_coder3
相关产品推荐
相关产品推荐

