按照長度拆分列表:
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)]