凭空想像力,我不是Python专家,但是这一点让我感到困惑。要么就是我丢失了完全显而易见的东西。它必须是两者之一。
我有两个numpy数组,a
和b
。 a
应该是b
的适当子集。为了确认这一点,我产生了设定差异:
>>> np.setdiff1d(a, b)
array([], dtype=float64)
如预期的那样。因此,
a
是b
的子集。除非我对
setdiff1d
的理解是错误的,否则我可能会认为这是错的,但是我重新阅读了文档,并指出setdiff1d
返回a:ar1中不在ar2中的值的排序一维数组。
好的,这是奇怪的地方。我有一些值
p
。如果a
确实是b
的子集,则以下内容应为true语句:如果
p
在a
中,则p
也在b
中尝试确认这一点时,我得到:
>>> p in a
True
>>> p in b
False
所以我不确定到底发生了什么,我希望有人指出我的愚蠢错误并大笑。
最佳答案
setdiff1d
和您的其他方法检查数字是否完全相等。由于浮点错误,您的数字很有可能不完全相等。如果要进行浮点比较,则应改用非常小的epsilon。
if abs(a - b) < 1e-12:
disp('equal!')