def matching_array_groups(datachunks_list):
    """Return identical indicies groups from list of data chunks.

    Args:
        datachunks_list: list of arrays of data, all same size

    Returns:
        match_idx_groups: list of indicies_match_lists for matching data
            arrays, each sublist has greater than one member
        single_idx_groups: list of indicies for data arrays that don't
            match any other data array (singletons)
    """
    match_idx_groups = []
    # copy into remaining chunks
    ungrp_chunk_indicies = range(len(datachunks_list))

    # loop through chunks, looking for matches in unsearched chunks for first
    #   item in unsearched chunks
    #   item will always match itself, may match others
    #   save all matching indicies for this chunk into list of indicies
    #       appended to match_idx_groups
    while ungrp_chunk_indicies:  # e.g. while len > 0
        test_idx = ungrp_chunk_indicies[0]

        matching_indicies = []
        for i in ungrp_chunk_indicies:
            if datachunks_list[i] == datachunks_list[test_idx]:
                matching_indicies.append(i)

        match_idx_groups.append(matching_indicies)
        ungrp_chunk_indicies = [
            x for x in ungrp_chunk_indicies if x not in matching_indicies
        ]

    single_idx_groups = [x[0] for x in match_idx_groups if len(x) == 1]
    match_idx_groups = [x for x in match_idx_groups if x[0] not in single_idx_groups]

    return (match_idx_groups, single_idx_groups)