def split_array(input_array, num_subarray=1):
    """
    splits an array into a number of subarrays
    :param input_array:
    :param num_subarray: the number of target sub arrays. this must be in the range of [1, len(input_array)]
    :return:
    """
    list_array = []
    base_subarray_len = int(len(input_array) / num_subarray)
    index = 0
    for i in range(num_subarray):
        sub_array = []
        rest = (len(input_array) - index) % base_subarray_len
        subarray_count = base_subarray_len + rest
        for j in range(subarray_count):
            sub_array.append(input_array[index])
            index = index + 1
            pass
        list_array.append(sub_array)
        pass
    return list_array