【问题标题】:Shuffling returns data None洗牌返回数据无
【发布时间】:2021-11-03 09:54:51
【问题描述】:

我知道这是非常基本的,但是当我调用我的函数来洗牌数据时,它返回 None。 我尝试了多个版本的 return 语句,但似乎没有任何效果。

def _shuffle_variables(var, aux_var, label, technique):
    #from collections.abc import Iterable
    import random
    
    arg_data = inspect.getfullargspec(_shuffle_variables)[0]
    sorted_var = []
    dict_var = {} 
    if technique == 'acoustic':
        #nested_arg = check_nested_input_arg(var, aux_var, label)
        #args = [var, aux_var,label]
        is_nested_args = [True, False, False]

        #shuffle indices with length of label
        if is_nested_args[2] == False:
            idx_shuffled = list(range(0, len(label)))
            random.shuffle(idx_shuffled)
        else:
            idx_shuffled = list(range(0, np.array(label).shape[1]))
            random.shuffle(idx_shuffled)
        
        for i in range(len(arg_data)):
            if is_nested_args == True:
                for k in range(np.array(eval(arg_data[i])).shape):
                    sort_var = [np.array(eval(arg_data[i]))[k][j] for j in idx_shuffled]
                    sorted_var.append(sort_var)
                    #print(sort_var)
                    dict_var[str(k)] = sort_var
                return sorted_var
            elif is_nested_args == False:
                sort_var = [np.array(eval(arg_data[i]))[j] for j in idx_shuffled]
                dict_var[arg_data[i]] = sort_var
                sorted_var.append(sort_var)
                return sorted_var
    return sorted_var #dict_var
  

nested_list1 = [[random.random() for x in range(6249)] for x in range(6357)]
nested_list2 = [[random.random() for x in range(6249)] for x in range(6357)]
var = [random.random() for x in range(6249)]
label = [random.random() for x in range(6249)]

idx = _shuffle_variables([nested_list1, nested_list2], var, label, 'acoustic')

【问题讨论】:

  • if is_nested_args == True:elif is_nested_args == False:。你的is_nested_args 是一个列表。

标签: python numpy keras random


【解决方案1】:

您的代码不会“返回无”,而是返回空列表。

为什么?正因为如此:

            if is_nested_args == True:
                for k in range(np.array(eval(arg_data[i])).shape):
                    sort_var = [np.array(eval(arg_data[i]))[k][j] for j in idx_shuffled]
                    sorted_var.append(sort_var)
                    #print(sort_var)
                    dict_var[str(k)] = sort_var
                return sorted_var
            elif is_nested_args == False:
                sort_var = [np.array(eval(arg_data[i]))[j] for j in idx_shuffled]
                dict_var[arg_data[i]] = sort_var
                sorted_var.append(sort_var)
                return sorted_var

is_nested_args 是一个列表 (is_nested_args = [True, False, False]),所以它既不是 True 也不是 False,所以你永远不会 append 到它。

你可能想做if is_nested_args[something]。但是,即使您添加索引,您也会在该块中返回 - 我认为这是不正确的,因为您处于循环中

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2013-01-15
    • 2018-04-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多