Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 结合scipy.optimize.brute网格和结果_Python_Arrays_Numpy_Scipy - Fatal编程技术网

Python 结合scipy.optimize.brute网格和结果

Python 结合scipy.optimize.brute网格和结果,python,arrays,numpy,scipy,Python,Arrays,Numpy,Scipy,我使用scipy的brute优化器计算给定不同输入参数的函数的分数。为了分析结果,我想将结果参数vs分数集转储到csv中 我目前得到的是brute optimizer的返回,文档中的返回形式如下: 返回: x0:ndarray 包含目标函数最小值点坐标的一维数组。(关于返回的点,请参见注释1。) fval:浮动 点x0处的函数值。 网格:元组 评估网格的表示。它的长度与x0相同。(满_输出为真时返回。) 日:日 计算网格各点的函数值,即Jout=func(*网格)。(当full_输出为真时返回。

我使用scipy的brute优化器计算给定不同输入参数的函数的分数。为了分析结果,我想将结果参数vs分数集转储到csv中

我目前得到的是brute optimizer的返回,文档中的返回形式如下:

返回:
x0:ndarray
包含目标函数最小值点坐标的一维数组。(关于返回的点,请参见注释1。)
fval:浮动
点x0处的函数值。
网格:元组
评估网格的表示。它的长度与x0相同。(满_输出为真时返回。)
日:日
计算网格各点的函数值,即Jout=func(*网格)。(当full_输出为真时返回。)

我希望将“网格”值与“焦耳”参数组合为:

[Param1,Param2,Param3,Score1]
[Param1,Param2,Param3,Score2]

brute的输出示例如下:

     (array([ 0.,  0.,  0.]), -0.96868449202047968, array([[[[0, 0],
     [0, 0]],

    [[1, 1],
     [1, 1]]],


   [[[0, 0],
     [1, 1]],

    [[0, 0],
     [1, 1]]],


   [[[0, 1],
     [0, 1]],

    [[0, 1],
     [0, 1]]]]), array([[[-0.96868449, -0.96868449],
    [-0.96868449, -0.96868449]],

   [[-0.96868449, -0.96868449],
    [-0.96868449, -0.96868449]]]))
在我的一生中,我无法理解如何将上述索引2中的数组(“网格”)与索引3中的数组(“焦耳”)结合起来。我的np数组不符合标准


任何提示或指点都将非常感谢,并能缓解我过去几个小时沮丧的大脑。

那么你想把三(2,2,2)个矩阵堆叠在
网格中
和(2,2,2)矩阵
Jout
?可能是您需要的,即:

In [26]: a = np.array([[[[0, 0],
    ...:      [0, 0]],
    ...: 
    ...:     [[1, 1],
    ...:      [1, 1]]],
    ...: 
    ...: 
    ...:    [[[0, 0],
    ...:      [1, 1]],
    ...: 
    ...:     [[0, 0],
    ...:      [1, 1]]],
    ...: 
    ...: 
    ...:    [[[0, 1],
    ...:      [0, 1]],
    ...: 
    ...:     [[0, 1],
    ...:      [0, 1]]]])

In [27]: b = np.array([[[-0.96868449, -0.96868449],
    ...:     [-0.96868449, -0.96868449]],
    ...: 
    ...:    [[-0.96868449, -0.96868449],
    ...:     [-0.96868449, -0.96868449]]])

In [28]: np.stack([*a, b], -1)
Out[28]: 
array([[[[ 0.        ,  0.        ,  0.        , -0.96868449],
         [ 0.        ,  0.        ,  1.        , -0.96868449]],

        [[ 0.        ,  1.        ,  0.        , -0.96868449],
         [ 0.        ,  1.        ,  1.        , -0.96868449]]],


       [[[ 1.        ,  0.        ,  0.        , -0.96868449],
         [ 1.        ,  0.        ,  1.        , -0.96868449]],

        [[ 1.        ,  1.        ,  0.        , -0.96868449],
         [ 1.        ,  1.        ,  1.        , -0.96868449]]]])

In [29]: 

太棒了,我想这让我在大部分方面都达到了目的,但我如何才能将最终输出转换成更平坦的形式,即:[[0,0,0,-0.96],[0,0,1,-0.96]]看看
numpy.reforme
.edit:找到了-谢谢@tjollans!