You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么numpy.all()返回的真值用is与True比较会返回False?

问题根本原因

  • is 运算符的判断逻辑是两个对象是否为内存中同一个实例,对比的是对象的内存地址;== 运算符的判断逻辑是两个对象的值是否相等,二者的设计目标完全不同。
  • numpy.all() 方法的返回值不是 Python 原生的 bool 类型对象,而是 numpy 自定义的 numpy.bool_ 类型对象。Python 原生的 True 是全局唯一的单例对象,而 numpy.bool_ 类型的 True 是另一个独立的对象,二者内存地址不同,所以用 is 对比会返回 False。
  • 二者打印结果看起来一致,是因为 numpy.bool_ 类型实现了和原生 bool 一致的字符串表示方法,视觉上没有差异,本质是完全不同的两类对象。

你可以通过以下代码验证类型差异:

# 打印Python原生True的类型
print(type(True))
# 输出:<class 'bool'>

# 打印numpy.all返回结果的类型
print(type(bool_arr.all()))
# 输出:<class 'numpy.bool_'>

补充说明

日常判断布尔返回值时,不需要显式和 True/False 比较,直接写如下代码即可,numpy.bool_ 类型在布尔判断上下文里会自动完成真值转换,完全符合预期:

if bool_arr.all():
    # 你的业务逻辑

内容的提问来源于stack exchange,提问作者rambalachandran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:45:03