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

为何numpy数组[1,5]不在y中却输出True?

问题:Numpy数组使用in操作符出现不符合预期的结果
import numpy as np

y=np.array([[0, 0]]*100)
y[0]=np.array([2,1])
y[1]=np.array([1,2])

print(np.array([1, 5]) in y)

运行上述代码时,明明[1,5]不在数组y中,程序却输出True,正确结果应为False,以下是原因解析:

原因解析

  • numpy数组的in操作符逻辑和Python列表完全不同:它不会检查整个子数组是否完全匹配,而是对目标数组的每个子数组和待判断数组做逐元素比较,只要任意一个位置的元素相等,就会返回True。
  • 具体到你的代码:当np.array([1,5])和y[1](即[1,2])逐元素比较时,第一个元素1 == 1为True,这个结果被in操作符判定为满足条件,所以最终输出True。

正确的检查方式

如果要判断整个子数组是否存在于y中,推荐使用以下两种方法:

# 方法1:遍历并逐个比较子数组
any(np.array_equal([1,5], sub) for sub in y)

# 方法2:利用广播和轴方向的全匹配检查
((y == [1,5]).all(axis=1)).any()

这两种方式都会正确返回False,因为它们是检查子数组是否完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:28:12