[Numpy-discussion] all elements equal

Keith Goodman kwgoodman@gmail....
Mon Mar 5 13:56:56 CST 2012


On Mon, Mar 5, 2012 at 11:52 AM, Benjamin Root <ben.root@ou.edu> wrote:
> Another issue to watch out for is if the array is empty.  Technically
> speaking, that should be True, but some of the solutions offered so far
> would fail in this case.

Good point.

For fun, here's the speed of a simple cython allclose:

I[2] a = np.ones(100000)
I[3] timeit a.min() == a.max()
10000 loops, best of 3: 106 us per loop
I[4] timeit allequal(a)
10000 loops, best of 3: 68.9 us per loop

I[5] a[1] = 9
I[6] timeit a.min() == a.max()
10000 loops, best of 3: 102 us per loop
I[7] timeit allequal(a)
1000000 loops, best of 3: 269 ns per loop

where

@cython.boundscheck(False)
@cython.wraparound(False)
def allequal(np.ndarray[np.float64_t, ndim=1] a):
    cdef:
        np.float64_t a0
        Py_ssize_t i, n=a.size
    a0 = a[0]
    for i in range(n):
        if a[i] != a0:
            return False
    return True


More information about the NumPy-Discussion mailing list