python - 每行 numpy 的非对角线元素的均值

标签 python numpy mean numpy-ndarray confusion-matrix

我基本上有一个大小为 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/

相关文章:

python - 清理数据框中可能存在的错误值

python - 提高在列表中查找项目索引的速度

performance - 为什么 `colMeans()` 和 `rowMeans()` 函数比使用带有 `lapply()` 的均值函数更快?

python - 我怎样才能清理这个请求结果?

python - 在范围内合并 Pandas 数据框的最快方法

python - 如何使用立体相机创建良好的深度图?

python - 取列表列表的平均值,忽略零值

python - 计算一维 numpy 数组中的局部均值

python - 在 QListWidget 中滑动以选中/取消选中

python - Travis CI 抛出语法错误