python列表按比例或長度拆分


按照長度拆分列表:

    def split_by_length(init_list, children_list_len):
        """
        按照長度拆分給定數組
        :param init_list: 
        :param children_list_len: 
        :return:
        """
        list_of_groups = zip(*(iter(init_list),) * children_list_len)
        end_list = [list(i) for i in list_of_groups]
        count = len(init_list) % children_list_len
        end_list.append(init_list[-count:]) if count != 0 else end_list
        return end_list

按比例額拆分:

def split_by_ratio(arr, *ratios):
    """
    按比例拆分數組
    :param arr:
    :param ratios: 該參數的個數即為子數組的個數 eg: 0.5,0.5即為拆分兩個各占50%的子數組
    :return:
    """
    arr = np.random.permutation(arr)
    ind = np.add.accumulate(np.array(ratios) * len(arr)).astype(int)
    return [x.tolist() for x in np.split(arr, ind)][:len(ratios)]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM