如何打包和解包类型列表numpy.ndarray公司

2024-04-26 07:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了以下代码,但我想定制它根据我的需要。给定方法调用:

        best_n_hidden = hyperparam_selection(
            train_network,
            n_hidden_range=[10, 128],
            func_args=[tr_X, ts_X, tr_y, ts_y],
            n_iter=6,
        )

def hyperparam_selection(func, n_hidden_range, func_args=None, n_iter=20):
    if func_args is None:
        func_args = []

    scores = []
    parameters = []

    min_n_hidden, max_n_hidden = n_hidden_range
    n_hidden_choices = np.arange(min_n_hidden, max_n_hidden + 1)

    # To be able to perform gaussian process we need to
    # have at least 2 samples.
    n_hidden = random.randint(min_n_hidden, max_n_hidden)
    score = func(n_hidden, *func_args) # ISSUE HERE!!
    parameters.append(n_hidden)
    scores.append(score)
    n_hidden = random.randint(min_n_hidden, max_n_hidden)

问题是tr_X, ts_X, tr_y, ts_y属于<type 'numpy.ndarray'>类型,所以在score = func(n_hidden, *func_args)行中使用星号操作符*func_args解包时会出现问题。我不知道numpy中的等价打包和解包方法是什么,我可以用在这种情况下numpy.stacknumpy.packbits。任何暗示都将不胜感激。你知道吗


Tags: 方法numpynoneargsrangemintrmax
1条回答
网友
1楼 · 发布于 2024-04-26 07:33:32

在这种情况下,数组没有什么特别之处。你知道吗

在调用中,func_args=[tr_X, ts_X, tr_y, ts_y],[...]是一个包含4项的列表。它们是什么并不重要。你知道吗

在函数内部,看起来func_args总是一个列表,可能是空的[]。你知道吗

在调用score = func(n_hidden, *func_args)中,该列表将展开为。你知道吗

我希望这是一个

def func(n_hidden, x1, x2, y1, y2):
     ...

将工作(如果你总是传递4个对象)。或者

def func(n_hidden, *args):
    n = len(args)
    # args is a tuple.
    if len(args)==4:
        x1, x2, y1, y2 = args
        # or work with
        args[0], args[1], etc.

您没有打包或解包数组。而是处理数组的列表或元组。你知道吗

相关问题 更多 >