Olo*_*ari 8 python numpy mean confusion-matrix numpy-ndarray
我本质上有一个大小为 的混淆矩阵,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))
Run Code Online (Sandbox Code Playgroud)
cs我的n x n矩阵在哪里
代码看起来很复杂,我当然觉得有一个更优雅的解决方案。
简洁的使用summation-
(cs.sum(1)-1)/(cs.shape[1]-1)
Run Code Online (Sandbox Code Playgroud)
对于忽略对角线元素的一般情况,请使用np.diag代替1偏移 -
(cs.sum(1)-np.diag(cs))/(cs.shape[1]-1)
Run Code Online (Sandbox Code Playgroud)
另一个与mean-
n = cs.shape[1]
(cs.mean(1)-1./n)*(n/(n-1))
Run Code Online (Sandbox Code Playgroud)