2012-01-20 15 views
0

数を同じにする必要があり、私はMATLABでこのコードがあります。はエラー、MATLABから変換scipyのダウンロード:配列は寸法

ext = [lat(end, :); lat; lat(1, :)]; 
lat = [ext(:, end) ext ext(:, 1)]; 

を、私はscipyのダウンロードでこれを実行しようとしました:

ext = sc.vstack([[lat[-1,:]], [lat], [lat[0,:]]]) 
lat = sc.vstack([[ext[:]], [ext], [ext[:,0]]]) 

が、それが与えます私のエラー:

ValueError: arrays must have same number of dimensions

と:

return _nx.concatenate(map(atleast_2d,tup),0) --> (in /usr/lib/pymodules... it's the definition of vstack function)

どこが間違っていますか?

答えて

1

extに縦に積み重ね、横方向にlatに積み重ねています。

試行:

ext = sc.vstack([lat[-1,:], lat, lat[0,:]]) 
lat = sc.hstack([ext[:,-1], ext, ext[:,0]]) 

編集:latはもともと行列ではなく、配列の場合

上記のコードのみが動作します。そうでない場合は、lat = sc.matrix(lat)に変換することができます。また、引数の中の余分な角括弧を除いて、hstackvstackに削除しました。

+0

:こんにちは、まだ同じ.. – George

+0

:完璧です!ありがとう! (配列は難しいですか、できないのですか?) – George

+0

@George、配列のスライスは元の次元情報を持たないので、配列としてhstackの中間ステップを再構成する必要があります。それは私の意見では醜いだろう。 – foglerit