4

numpy配列を返すメソッドがあります。私がやりたいのは、各反復でこの配列を取得し、それを別の配列配列に連結して、ループの最後に行列を作成することです。

これはこれまでの私のコードですが、指定された行でプログラムがクラッシュします

 delta_Array = np.array([0.01,0.02,0.03, 0.04, 0.05, 0.06,0.07, 0.08, 0.09, 0.10])
 theta_Matrix = np.zeros(8)

 t = Ridge(Xtrain, ytrain, .3) # This method returns an array of 8 elements
 np.append(theta_Matrix,t, axis=0)
 print delta_Array
 print theta_Matrix

この方法で、私の現在の出力はこれです

 [ 0.01  0.02  0.03  0.04  0.05  0.06  0.07  0.08  0.09  0.1 ] # delta_Array
 [ 0.  0.  0.  0.  0.  0.  0.  0.] # theta_Matrix

2回の反復後、出力IDは次のようになります。また、lopが実行する反復回数も事前にわかりません。したがって、メソッドの実行後に任意の数の配列を生成できます。ただし、どちらの方法でも、すべての配列がtheta_matrixを形成する必要があります。

  theta_Matrix:

 [[ 0.65  0.65565  0.19181  0.923  0.51561  0.846  0.6464  0.6464]
  [ 0.9879  0.31213  0.68464  0.611  0.6161  0.61651  0.29858  0.1811]]

ありがとう

4

2 に答える 2

3

私には非常に似たようなことをする必要があるプロジェクトがあります。ループに動的なサイズ変更を実装できますが、Pythonのリストタイプは実際には動的配列として実装されているため、すでに利用可能なツールを利用することもできます。あなたはこのようなことをすることができます:

delta_Array = np.array([0.01,0.02,0.03, 0.04, 0.05, 0.06,0.07, 0.08, 0.09, 0.10])
theta_Matrix = []

for i in range(N):
     t = Ridge(Xtrain, ytrain, .3)
     theta_Matrix.append(t)
theta_Matrix = np.array(theta_Matrix)

期待するサイズがすでにわかっている場合はtheta_Matrix、次のような操作を行うことで最高のパフォーマンスが得られることをお伝えしておきます。

delta_Array = np.array([0.01,0.02,0.03, 0.04, 0.05, 0.06,0.07, 0.08, 0.09, 0.10])
theta_Matrix = np.zeros((N, 8))

for i in range(N):
     t = Ridge(Xtrain, ytrain, .3)
     theta_Matrix[i] = t
于 2012-11-17T18:09:03.410 に答える
2

np.append 連結された配列を返しますが、その戻り値は無視しています。np.vstack行ベクトルを行列にスタックするため、代わりに使用することも検討する必要があります(appendこれは可能ですが、追加の引数が必要です)。

ただし、マトリックスの構築には2次の時間がかかるため、実行中np.appendまたはnp.vstackループ内での実行はまだあまり良い考えではありません。配列を事前に割り当ててから、スライスを使用して行ごとに配列を埋めることをお勧めします。必要なサイズがわからない場合は、サイズを2倍にすることを検討してください(Wikipediaの動的配列を参照)np.resize

于 2012-11-17T17:55:26.727 に答える