2016-12-03 7 views

答えて

4

あなたはnp.arrayを試したことがありますか?

np.array([[1,2],[3,4]]) 

2つの1Dアレイ(リスト)

同様

np.array([np.ones(3,3), np.zeros(3,3)]] 

を連結することによって、2Dアレイ(2,3,3)アレイを製造すべきであることができます。

新しい軸np.stackを使用すると、追加する軸をより詳細に制御できます。これは、すべての入力配列の次元を1つずつ拡張し、連結することによって機能します。

自分でサイズを拡張することができます。

In [378]: A=np.ones((2,3),int) 
In [379]: B=np.zeros((2,3),int) 
In [380]: np.concatenate([A[None,:,:], B[None,:,:]], axis=0) 
Out[380]: 
array([[[1, 1, 1], 
     [1, 1, 1]], 

     [[0, 0, 0], 
     [0, 0, 0]]]) 
In [381]: _.shape 
Out[381]: (2, 2, 3) 

を理解するために重要なものは以下のとおりです。

入力の大きさに一致する
  • - それらはすべてに一致する必要はなく、

  • に入社されている次元は入力の次元を拡大必要に応じて。 2D配列を連結して3Dを形成するには、2Dを最初に3Dに拡張する必要があります。そのNoneまたはnp.newaxisトリックは特に貴重です。

  • 右軸に沿って連結します。

stackhstackvstackなどすべてがこれを容易にするが、スキルnumpyのユーザーがconcatenateを直接操作することができるはずです。インタラクティブなセッションで小さなサンプルで練習する。

In [385]: np.array((A,B)).shape 
Out[385]: (2, 2, 3) 
In [386]: np.stack((A,B)).shape 
Out[386]: (2, 2, 3) 
In [387]: np.stack((A,B),axis=1).shape 
Out[387]: (2, 2, 3) 
In [388]: np.stack((A,B),axis=2).shape 
Out[388]: (2, 3, 2) 

アレイは形状が異なる場合は、np.arrayは、オブジェクトDTYPEアレイ

In [389]: C=np.ones((3,3)) 
In [390]: np.array((A,C)) 
Out[390]: 
array([array([[1, 1, 1], 
     [1, 1, 1]]), 
     array([[ 1., 1., 1.], 
     [ 1., 1., 1.], 
     [ 1., 1., 1.]])], dtype=object) 
In [391]: _.shape 
Out[391]: (2,) 

dstack(及びstack)を作成する異なるサイズの配列に問題があります:

In [392]: np.dstack((A,B,C)) 
.... 
ValueError: all the input array dimensions except for the concatenation axis must match exactly 
+0

を私がしました'np.array()'を試してみましたが、 '(n、)'という形の配列が返されますが、その中の各要素は別の配列です。 – xxx222

+0

あなたの 'n'配列は形が異なっていなければなりません。オブジェクト配列を作成しています。あなたの配列の形は何ですか? 'dstack'がどのように動作するのか分かりません。 – hpaulj

+0

私はそれがその時にそれを認識していない!私は最終的に私の数が少ない配列のいくつかが同じサイズではないことを発見しました。あなたの答えをどうもありがとう! – xxx222

関連する問題