def array_equal(a1, a2):
try:<EOL><INDENT>a1, a2 = asarray(a1), asarray(a2)<EOL><DEDENT>except:<EOL><INDENT>return False<EOL><DEDENT>if a1.shape != a2.shape:<EOL><INDENT>return False<EOL><DEDENT>return bool(asarray(a1 == a2).all())<EOL>
True if two arrays have the same shape and elements, False otherwise.

Parameters
----------
a1, a2 : array_like
    Input arrays.

Returns
-------
b : bool
    Returns True if the arrays are equal.

See Also
--------
allclose: Returns True if two arrays are element-wise equal within a
          tolerance.
array_equiv: Returns True if input arrays are shape consistent and all
             elements equal.

Examples
--------
>>> np.array_equal([1, 2], [1, 2])
True
>>> np.array_equal(np.array([1, 2]), np.array([1, 2]))
True
>>> np.array_equal([1, 2], [1, 2, 3])
False
>>> np.array_equal([1, 2], [1, 4])
False