为何含None值的NumPy数组可绘图,列表却不行?
问题原因解析
1. NumPy数组自动转换None为NaN
当你将None存入NumPy数组时,NumPy会自动把它转换成np.nan(浮点型的非数值标记)。Matplotlib对np.nan有原生支持:绘制时会自动跳过包含np.nan的数据点,误差线计算遇到np.nan也会直接跳过,不会触发运算错误。
2. 纯Python列表的None会触发运算错误
纯列表里的None是NoneType类型,Matplotlib绘制误差线时需要计算Y ± Y_ERR的数值范围。当遇到None时,执行None - None这类操作会直接抛出TypeError——因为NoneType不支持算术运算,这就是报错的核心原因。
3. NumPy转列表后的特殊处理
把NumPy数组转成列表时,原数组里的np.nan会被转换成Python内置的float('nan')(浮点型的非数值),而非None。float('nan')支持算术运算(运算结果仍是nan),Matplotlib能识别并跳过这些nan点,所以不会报错,能正常绘图。
内容的提问来源于stack exchange,提问作者shadowbiscuit
相关产品推荐
相关产品推荐

