假设我有一堆数组,包括x和y,并且我想检查它们是否相等。通常,我可以只使用np.all(x == y)(除了一些我现在忽略的愚蠢的边角情况)。
然而,这会评估整个(x == y)数组,这通常是不必要的。我的数组非常大,我有很多数组,两个数组相等的概率很小,因此很可能在all函数返回False之前,我只需要评估(x == y)的一小部分,所以这对我来说不是最优解决方案。
我尝试使用内置的all函数,结合itertools.izip:all(val1==val2 for val1,val2 in itertools.izip(x, y))
然而,仅当两个数组相等时,似乎比起使用
有没有一种更快速的方法来实现我的需求?
我知道这个问题类似于之前提出的问题(例如Comparing two numpy arrays for equality, element-wise),但它们并没有涉及到提前结束的情况。
然而,这会评估整个(x == y)数组,这通常是不必要的。我的数组非常大,我有很多数组,两个数组相等的概率很小,因此很可能在all函数返回False之前,我只需要评估(x == y)的一小部分,所以这对我来说不是最优解决方案。
我尝试使用内置的all函数,结合itertools.izip:all(val1==val2 for val1,val2 in itertools.izip(x, y))
然而,仅当两个数组相等时,似乎比起使用
np.all
,这种方法速度要慢得多。我认为这是因为内置的all
功能更加通用。而np.all
无法用于生成器。有没有一种更快速的方法来实现我的需求?
我知道这个问题类似于之前提出的问题(例如Comparing two numpy arrays for equality, element-wise),但它们并没有涉及到提前结束的情况。
np.all
,所以它有点无用。 (我确实希望专门为此目的设计一个函数进行短路,但遗憾的是没有。) - acdr