我基本上有一个大小为 n x n
的混淆矩阵我所有的对角线元素都是 1
.
对于每一行,我希望计算其平均值,不包括 1
,即不包括对角线值。是否有一种简单的方法可以在 numpy
中做到这一点? ?
这是我目前的解决方案:
mask = np.zeros(cs.shape, dtype=bool)
np.fill_diagonal(mask, 1)
print(np.ma.masked_array(cs, mask).mean(axis=1))
哪里
cs
是我的 n x n
矩阵代码看起来很复杂,我当然觉得有一个更优雅的解决方案。
最佳答案
一个简洁的使用 summation
——
(cs.sum(1)-1)/(cs.shape[1]-1)
对于忽略对角元素的一般情况,使用
np.diag
代替 1
抵消 -(cs.sum(1)-np.diag(cs))/(cs.shape[1]-1)
另一个与
mean
——n = cs.shape[1]
(cs.mean(1)-1./n)*(n/(n-1))
关于python - 每行 numpy 的非对角线元素的均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62250799/