2 条题解

  • 0
    @ 2026-3-26 22:07:17

    NUMPY017 题解:表达式结果判断

    题目

    计算并输出以下 numpy 表达式的结果(每行一个):

    1. 0×np.nan0 \times \texttt{np.nan}
    2. np.nan==np.nan\texttt{np.nan} == \texttt{np.nan}
    3. np.inf>np.nan\texttt{np.inf} > \texttt{np.nan}
    4. np.nannp.nan\texttt{np.nan} - \texttt{np.nan}
    5. $\texttt{np.nan} \text{ in } \texttt{set}([\texttt{np.nan}])$
    6. 0.3==3×0.10.3 == 3 \times 0.1

    代码

    import numpy as np
    
    print(0 * np.nan)
    print(np.nan == np.nan)
    print(np.inf > np.nan)
    print(np.nan - np.nan)
    print(np.nan in set([np.nan]))
    print(0.3 == 3 * 0.1)
    

    结果分析

    表达式 结果 说明
    0 * np.nan nan 任何数乘以 nan 都得 nan
    np.nan == np.nan False NaN 不等于自身
    np.inf > np.nan 任何数与 nan 比较都返回 False
    np.nan - np.nan nan nan 运算结果还是 nan
    np.nan in set([np.nan]) True Python 的 nan 可以放入集合
    0.3 == 3 * 0.1 False 浮点数精度问题

    输出

    nan
    False
    False
    nan
    True
    False
    

    核心知识点

    知识点 说明
    np.nan Not a Number,表示无效值
    np.inf 无穷大
    NaN != NaN NaN 不等于自身
    浮点数精度 十进制小数无法精确表示为二进制

    判断 NaN 的正确方法

    # 错误!
    x == np.nan  # 永远返回 False
    
    # 正确!
    np.isnan(x)  # 返回 True/False
    

    比较浮点数的正确方法

    # 错误!
    0.3 == 3 * 0.1  # False
    
    # 正确!
    np.isclose(0.3, 3 * 0.1)  # True
    
    • 0
      @ 2026-3-26 17:41:44

      NUMPY017 题解:NaN 和 Inf 的特性

      题目

      分析以下表达式的结果:

      • 0 * np.nan
      • np.nan == np.nan
      • np.inf > np.nan
      • np.nan - np.nan
      • np.nan in set([np.nan])
      • 0.3 == 3 * 0.1

      解题思路

      理解 NaN(Not a Number)和 Inf(Infinity)的特殊性质。

      代码

      import numpy as np
      print(0 * np.nan)
      print(np.nan == np.nan)
      print(np.inf > np.nan)
      print(np.nan - np.nan)
      print(np.nan in set([np.nan]))
      print(0.3 == 3 * 0.1)
      

      输出结果

      nan
      False
      False
      nan
      True
      False
      

      知识点详解

      1. NaN 的特性

      • NaN 表示"不是一个数字"(Not a Number)
      • NaN 与任何数比较都返回 False
      • NaNNaN 比较也返回 False(因为 NaN 代表未定义的值)

      2. Inf 的特性

      • Inf 表示"无穷大"
      • 任何数与 NaN 比较都返回 False

      3. 浮点数精度问题

      0.3 == 3 * 0.1  # False
      
      • 这是因为浮点数在计算机中无法精确表示
      • 0.3 的实际值约为 0.2999999999999999889
      • 3 * 0.1 的实际值约为 0.3000000000000000444

      核心知识点

      1. np.nan —— 表示非数字
      2. np.inf —— 表示无穷大
      3. NaN 与任何值比较都返回 False
      4. 浮点数存在精度问题
      • 1

      信息

      ID
      58
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      (无)
      递交数
      2
      已通过
      1
      上传者