2016-05-05 21 views
1

私はscipyのブルート・オプティマイザを使って、異なる入力パラメータが与えられた関数のスコアを計算しています。結果を分析するために、得られたパラメータ対スコアセットをCSVにダンプします。scipy.optimize.bruteグリッドと結果を組み合わせる

戻り値:

は、私が現在持っていると、ドキュメントからフォームであるブルートオプティマイザからの復帰である
X0:ndarray
点の座標を含む1次元配列目的関数は最小値をとっていました。 (注釈1を参照してください)
fval:float
ポイントx0の関数値。
グリッド:タプル
評価グリッドの表記。 x0と同じ長さです。 (full_outputがTrueのときに返されます。)
Jout:ndarray
評価グリッドの各ポイントでの関数値、つまりJout = func(* grid)です。 (full_outputがtrueの場合に返されます。)

source

私はの形で "Joutを" パラメータで "グリッド" の値を結合します:

[Param1を、PARAM2、Param3、SCORE1]
[Param1を、PARAM2、Param3、Score2]
...

ブルートからの出力例は次のとおり

 (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( "Jout")の配列を組み合わせる方法を理解できません。私のnp配列fooはsnuffまでではありません。

どのようなヒントやポインタも非常に高く評価され、最後の数時間の私の挫折した脳を楽にするでしょう。

答えて

1

したがって、3つ(2,2,2)の行列をgridと(2,2,2)の行列Joutに積み重ねたいですか? np.stackはつまり、あなたが必要なものが考えられます、[[0,0:

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.96]、[0,0,1、-0.96]] – ponderinghydrogen

+0

'numpy.reshape'を見てください。 – tjollans

+0

編集:見つかりました[ここ](http://stackoverflow.com/questions/13990465/3d-numpy-array-to-2d) - thanks @tjollans! – ponderinghydrogen

関連する問題