【语义分割】评价指标代码函数:np.sum()、np.nansum()、np.nanmean()、np.diag()、np.bincount()

引言

本文针对:
【语义分割】评价指标:PA、CPA、MPA、IoU、MIoU详细总结和代码实现(零基础从入门到精通系列!)中实现评价指标代码里相关函数进行补充说明,包括:np.sum()、np.nansun()、np.nanmean()、np.diag()、np.bincount()

np.sum()

numpy中sum函数常用参数:
sum(a, axis=None...)

  • a:要进行加法运算的向量、数组、矩阵
  • axis:默认为None,可取值为整数
    • axis = None,将a中所有元素全部加起来,求得一个和
    • axis = 0,对a中列求和,压缩行
    • axis = 1,对a中行求和,压缩列
    • 总结:列和压缩行,行和压缩列

例子:

>>> np.sum([0.5, 1.5])
2.0

>>> np.sum([[1, 3], [5, 6]])  # axis = None
15

>>> np.sum([[1, 3], [5, 6]], axis = 0)  # axis = 0
array([6, 9])

>>> np.sum([[1, 3], [5, 6]], axis = 1)  # axis = 1
array([ 4, 11])

在上述例子中:

  • 当axis = 0,压缩行,即:将每一列的元素相加,再将矩阵压缩为一行
  • 当axis = 1,压缩列,即:将每一行的元素相加,再将矩阵压缩为一列(为方便理解,将此处说为一列,实际上,在控制台的输出中,仍然是以一行的形式输出)

计算如下图所示:
【语义分割】评价指标代码函数:np.sum()、np.nansum()、np.nanmean()、np.diag()、np.bincount()_第1张图片

np.nansum()、np.nanmean()

Q:NaN是什么?
A:Not a Number(NaN),代表一个“不是数字”的值,这个指不能直接进行运算,但它却是一个Number类型!
参考链接:
NaN 是什么?它的类型是什么?如何可靠地测试一个值是否等于 NaN ?)

在一个numpy数组求和、均值时,如果这个数组里包含了nan,则程序会报错或者求出来的值是nan,如下代码所示:

>>> arr = np.array([1, 2, 3, 4, np.nan])
>>> arr.sum()
nan
>>> arr.mean()
nan

如何在求和、均值时忽略nan?
使用:np.nansum()、np.nanmean()

>>> arr = np.array([1, 2, 3, 4, np.nan])

>>> arr.sum()
nan
>>> arr.mean()
nan

>>> np.nansum(arr) # np.nansum()中:nan取值为 0
10.0
>>> np.nanmean(arr) # np.nanmean()中:nan取值为0且取均值时忽略它,如:(1 + 2 + 3 + 4) / 4 = 2.5,而不是(1 + 2 + 3 + 4 + 0) / 5 = 2
2.5
>>>

np.diag()

可用于处理:数组、矩阵等
np.diag(arr)

  • 当arr是一维数组时,结果是以一维数组组成对角线元素的矩阵
  • 当arr是二维矩阵时,结果是二维矩阵的对角线元素
>>> arr1 = np.arange(1, 4)
>>> arr2 = np.arange(1, 10).reshape(3, 3)

>>> arr1
array([1, 2, 3])

>>> arr2
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
       
>>> np.diag(arr1)
array([[1, 0, 0],
       [0, 2, 0],
       [0, 0, 3]])
       
>>> np.diag(arr2)
array([1, 5, 9])

np.bincount()

参考:numpy.bincount详解

Python 中 (&,|)和(and,or)之间的区别

参考:Python 中 (&,|)和(and,or)之间的区别

参考

  1. numpy.sum()的使用
  2. numpy.ndarray 在求mean,max,min的时候如何忽略跳过nan值,使用np.nanmean, np.nanmax
  3. NaN 是什么?它的类型是什么?如何可靠地测试一个值是否等于 NaN ?
  4. Python NumPy中的diag函数
  5. numpy.bincount详解
  6. Python 中 (&,|)和(and,or)之间的区别

你可能感兴趣的:(Python基础,深度学习)