Check if a numpy array is sorted

np.all(a[:-1] <= a[1:])

Examples:

is_sorted = lambda a: np.all(a[:-1] <= a[1:])

>>> a = np.array([1,2,3,4,9])
>>> is_sorted(a)
True

>>> a = np.array([1,2,3,4,3])
>>> is_sorted(a)
False

The inefficient but easy-to-type solution:

(a == np.sort(a)).all()

With NumPy tools:

np.all(np.diff(a) >= 0)

but numpy solutions are all O(n).

If you want quick code and very quick conclusion on unsorted arrays:

import numba
@numba.jit
def is_sorted(a):
    for i in range(a.size-1):
         if a[i+1] < a[i] :
               return False
    return True
          

which is O(1) (in mean) on random arrays.

Tags:

Python

Numpy