首页 > 解决方案 > 如何计算训练相似度矩阵的加权平均值

问题描述

我有一个像这样的三角形相似矩阵。

[[3, 1, 2, 0],
 [1, 3, 0, 0],
 [1, 0, 0, 0],
 [0, 0, 0, 0]]

如何在丢弃零元素的同时计算每行的加权平均值?

标签: pythonnumpycosine-similarity

解决方案


您可以沿第二个轴添加,然后除以sum每行非零值的数量。然后使用whereinnp.divide你可以在满足条件的地方进行划分,通过将其设置为指定非零值在哪里的掩码,可以防止除以零错误:

a = np.array([[3, 1, 2, 0],
              [1, 3, 0, 0],
              [1, 0, 0, 0],
              [0, 0, 0, 0]])

m = (a!=0).sum(1)
np.divide(a.sum(1), m, where=m!=0)
# array([2., 2., 1., 0.])

推荐阅读