2013-04-15 7 views
5

イムnumpyのに初心者との寸法であるものの基本的な質問を理解しようと、numpyの寸法

は、私は、次のコマンドを試してみましたが、最後の2つのアレイ用ndimが同じである理由を理解しようとしていますか?

>>> a= array([1,2,3]) 
>>> a.ndim 
1 
>>> a= array([[1,2,3],[4,5,6]]) 
>>> a 
array([[1, 2, 3], 
     [4, 5, 6]]) 
>>> a.ndim 
2 
>>> a=arange(15).reshape(3,5) 
>>> a.ndim 
2 

>>> a 
array([[ 0, 1, 2, 3, 4], 
     [ 5, 6, 7, 8, 9], 
     [10, 11, 12, 13, 14]]) 

私の理解..

Case 1: 
    array([[1, 2, 3], 
      [4, 5, 6]]) 

2 elements are present in main lists, so ndim is-2 

Case 2: 
    array([[ 0, 1, 2, 3, 4], 
      [ 5, 6, 7, 8, 9], 
      [10, 11, 12, 13, 14]]) 

3の要素は、主リストに存在する、ndimを行うIS-3

+0

を説明するために容易になるだろう – shx2

+0

'ndim'は「次元の数」を意味します。 2D配列にはndim = 2、3D配列にはndim = 3などがあります。 – endolith

答えて

10

アレイのshapeは、その寸法の組です。 1次元の配列の形状は(n、)です。 2次元配列は、(n、m)(あなたのケース2と3のような)の形状を持ち、3次元配列は(n、m、k)という形をしています。

したがって、2番目と3番目の例の形状は異なりますが、

a= np.array([[[1,2,3]],[[4,5,6]]]) 

または

np.arange(15).reshape(3,5,1) 

することができます:あなたはこのような何かをしなければならないでしょう、あなたの例に別の次元を追加したい場合は

>>> a= np.array([[1,2,3],[4,5,6]]) 
>>> a.shape 
(2, 3) 

>>> b=np.arange(15).reshape(3,5) 
>>> b.shape 
(3, 5) 

:寸法は両方のケースでは2個ですこの方法でディメンションを追加してください。

1次元:

>>> a = np.zeros((2)) 
array([ 0., 0.]) 
>>> a.shape 
(2,) 
>>> a.ndim 
1 

二次元:

>>> b = np.zeros((2,2)) 
array([[ 0., 0.], 
     [ 0., 0.]]) 
>>> b.shape 
(2,2) 
>>> b.ndim 
2 

三次元:

>>> c = np.zeros((2,2,2)) 
array([[[ 0., 0.], 
     [ 0., 0.]], 

     [[ 0., 0.], 
     [ 0., 0.]]]) 
>>> c.shape 
(2,2,2) 
>>> c.ndim 
3 

四寸法:あなたは彼らがあることを期待したもの言及した場合

>>> d = np.zeros((2,2,2,2)) 
array([[[[ 0., 0.], 
     [ 0., 0.]], 

     [[ 0., 0.], 
     [ 0., 0.]]], 


     [[[ 0., 0.], 
     [ 0., 0.]], 

     [[ 0., 0.], 
     [ 0., 0.]]]]) 
>>> d.shape 
(2,2,2,2) 
>>> d.ndim 
4