python - Numpy 奇怪的行为 - 健全性检查。这怎么可能?

标签 python arrays numpy

无论怎么想,我都不是 Python 专家,但这个让我难住了。要么,要么我错过了一些非常明显的东西。它必须是两者之一。

我有两个 numpy 数组,aba 应该是 b 的真子集。为了证实这一点,我产生了集合差异:

>>> np.setdiff1d(a, b)
array([], dtype=float64)

如预期。 a 因此是 b 的子集。 除非我对 setdiff1d 的理解是错误的,我想这可能是错误的,但我重新阅读了文档,它指出 setdiff1d 返回一个:

Sorted 1D array of values in ar1 that are not in ar2.

好吧,这里发生了一些奇怪的事情。我有一些值 p。如果 a 确实是 b 的子集,则以下语句应为真: 如果pa中,那么p也在b

当试图确认这一点时,我得到:

>>> p in a
True
>>> p in b
False

所以我不确定到底发生了什么,我希望有人能指出我的愚蠢错误并大笑。

最佳答案

setdiff1d 和您的其他方法检查数字是否精确相等。由于浮点错误,您的数字很可能不完全相等。如果您想进行 float 比较,则应该使用非常小的 epsilon。

if abs(a - b) < 1e-12:
    disp('equal!')

关于python - Numpy 奇怪的行为 - 健全性检查。这怎么可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38624827/

相关文章:

javascript - AJAX Post 使用 Python 和 javascript 存储 JSON

javascript - indexOf() 函数不适用于数组

python - 将字典的字符串表示形式转换为真正的字典

python - 在 Python 中处理一个简单的工作流

python - 在 Linux 中保存 matplotlib 动画

java - 在java中比较两个整数数组而不进行排序

python - 使用 NumPy 计算平均分数时出错 : 'ufunc add' did not contain a loop

python - 在 Python 中打印二维矩阵中的所有非零元素

python - 导入时出现 UnicodeDecodeError (tweepy)

php - 什么原因导致 : "Notice: Uninitialized string offset" to appear?