Python Numpy矩阵乘法如何将单元格取值改为乘积均值而非总和
实现方法
你可以通过以下两种Numpy常用方式实现乘积项均值的计算:
- 方法1:直接对原矩阵乘法的结果除以内积维度的长度
矩阵乘法中每个位置的求和项数等于两个数组做内积的维度长度(你的示例中a的第一维长度为2,即每个单元格是2个乘积项的和),直接除以该长度即可得到均值,运算效率最高:
示例中第一个单元格的计算结果为import numpy as np a = np.array([[1,2,3],[1,2,3]]) b = np.array([[1,2,3,4,5],[1,2,3,4,5]]) c = np.dot(np.transpose(a), b) / a.shape[0]2/2 = 1.0,符合你要的均值逻辑。 - 方法2:通过广播机制直接沿内积轴求均值
如果你不想手动计算除数,也可以先将两个数组广播到相同维度,对应位置相乘后直接沿内积维度求均值,可读性更强:c = (a.T[:, :, np.newaxis] * b[np.newaxis, :, :]).mean(axis=1)
两种方法的计算结果完全一致,你可以根据自己的使用场景选择。
内容的提问来源于stack exchange,提问作者axia_so2
相关产品推荐
相关产品推荐

