def is_compatible_numpy_shape(left_shape, right_shape):
    """
    Check if left_shape and right_shape are numpy-compatible.

    Arguments:
        left_shape: Shape of the left tensor.
        right_shape: Shape of the right tensor.

    Returns:
        True if numpy-compatible, False otherwise.
    """
    if len(left_shape) == 0 or len(right_shape) == 0:
        return True
    is_compatible = lambda l, r: l == 1 or r == 1 or l == r
    shorter_len = min(len(left_shape), len(right_shape))
    for l, r in zip(left_shape[-shorter_len:], right_shape[-shorter_len:]):
        if not is_compatible(l, r):
            return False
    return True