Check whether an array-like is a 1-D pandas sparse array.

    Check that the one-dimensional array-like is a pandas sparse array.
    Returns True if it is a pandas sparse array, not another type of
    sparse array.

    Parameters
    ----------
    arr : array-like
        Array-like to check.

    Returns
    -------
    bool
        Whether or not the array-like is a pandas sparse array.

    See Also
    --------
    DataFrame.to_sparse : Convert DataFrame to a SparseDataFrame.
    Series.to_sparse : Convert Series to SparseSeries.
    Series.to_dense : Return dense representation of a Series.

    Examples
    --------
    Returns `True` if the parameter is a 1-D pandas sparse array.

    >>> is_sparse(pd.SparseArray([0, 0, 1, 0]))
    True
    >>> is_sparse(pd.SparseSeries([0, 0, 1, 0]))
    True

    Returns `False` if the parameter is not sparse.

    >>> is_sparse(np.array([0, 0, 1, 0]))
    False
    >>> is_sparse(pd.Series([0, 1, 0, 0]))
    False

    Returns `False` if the parameter is not a pandas sparse array.

    >>> from scipy.sparse import bsr_matrix
    >>> is_sparse(bsr_matrix([0, 1, 0, 0]))
    False

    Returns `False` if the parameter has more than one dimension.

    >>> df = pd.SparseDataFrame([389., 24., 80.5, np.nan],
                                columns=['max_speed'],
                                index=['falcon', 'parrot', 'lion', 'monkey'])
    >>> is_sparse(df)
    False
    >>> is_sparse(df.max_speed)
    True

def is_sparse(arr):
    """
    Check whether an array-like is a 1-D pandas sparse array.

    Check that the one-dimensional array-like is a pandas sparse array.
    Returns True if it is a pandas sparse array, not another type of
    sparse array.

    Parameters
    ----------
    arr : array-like
        Array-like to check.

    Returns
    -------
    bool
        Whether or not the array-like is a pandas sparse array.

    See Also
    --------
    DataFrame.to_sparse : Convert DataFrame to a SparseDataFrame.
    Series.to_sparse : Convert Series to SparseSeries.
    Series.to_dense : Return dense representation of a Series.

    Examples
    --------
    Returns `True` if the parameter is a 1-D pandas sparse array.

    >>> is_sparse(pd.SparseArray([0, 0, 1, 0]))
    True
    >>> is_sparse(pd.SparseSeries([0, 0, 1, 0]))
    True

    Returns `False` if the parameter is not sparse.

    >>> is_sparse(np.array([0, 0, 1, 0]))
    False
    >>> is_sparse(pd.Series([0, 1, 0, 0]))
    False

    Returns `False` if the parameter is not a pandas sparse array.

    >>> from scipy.sparse import bsr_matrix
    >>> is_sparse(bsr_matrix([0, 1, 0, 0]))
    False

    Returns `False` if the parameter has more than one dimension.

    >>> df = pd.SparseDataFrame([389., 24., 80.5, np.nan],
                                columns=['max_speed'],
                                index=['falcon', 'parrot', 'lion', 'monkey'])
    >>> is_sparse(df)
    False
    >>> is_sparse(df.max_speed)
    True
    """
    from pandas.core.arrays.sparse import SparseDtype

    dtype = getattr(arr, 'dtype', arr)
    return isinstance(dtype, SparseDtype)