python-numpyライブラリ学習ノート2 ndarray配列の作成、次元変換、タイプ変換、リストへの変換


ndarray配列の作成方法
1、pythonのリスト、メタグループなどのタイプからndarray配列を作成する
X=np.array(list/tuple) X=np.Array(list/tuple,dtype=np.float 32)はnp.array()がdtypeを指定しない場合、numpyはデータの状況に応じてdtypeのタイプを関連付けます.
  • リストタイプから配列を作成する
  • import numpy as np
    x = [0, 1, 2, 3, 6]
    a=np.array(x)
    print(a)
    [0 1 2 3 6]
    
  • メタグループから配列を作成する
  • import numpy as np 
    y = (4, 5, 6, 8, 5)
    a=np.array(y)
    print(a)
    [4 5 6 8 5]
    
  • リストとメタグループの混合から配列
  • を作成する
    import numpy as np
    x = [0, 1, 2, 3, 6]
    y = (4, 5, 6, 8, 5)
    a=np.array([x,y])
    print(a)
    [[0 1 2 3 6]
     [4 5 6 8 5]]
    

    2、numpyの関数を使用してndarray配列を作成()
  • np.arange(n)はrange()関数に似ており、0からn-1
  • までの要素のndarrayタイプを返します.
    import numpy as np
    a=np.arange(10)
    print(a)
    [0 1 2 3 4 5 6 7 8 9]
    
  • np.ones(shape)はshapeに基づいてすべて1の配列を生成し、shapeはメタグループタイプ
  • である.
    import numpy as np
    a=np.ones((2, 3))
    print(a)
    [[1. 1. 1.]
     [1. 1. 1.]]
    import numpy as np
    a=np.ones((2, 3),dtype=np.int32)   #     int32
    print(a)
    [[1 1 1]
     [1 1 1]]
    
  • np.zeros(shape)はshapeに基づいてすべて0の配列を生成し、shapeはメタグループタイプ
  • である.
    import numpy as np
    a=np.zeros((3, 3))
    print(a)
    [[0. 0. 0.]
     [0. 0. 0.]
     [0. 0. 0.]]
    
  • np.full(shape,val)はshapeに基づいて配列を生成し、各要素値はval
  • である.
    import numpy as np
    a=np.full((3, 3),5)
    print(a)
    [[5 5 5]
     [5 5 5]
     [5 5 5]]
    import numpy as np
    a=np.full((3,2,5),7)
    print(a)
    [[[7 7 7 7 7]
      [7 7 7 7 7]]
    
     [[7 7 7 7 7]
      [7 7 7 7 7]]
    
     [[7 7 7 7 7]
      [7 7 7 7 7]]]
    print(a.shape)
    (3, 2, 5)
    
  • np.eye(n)正方形のn*n単位行列を作成し、対角線が1の残りは0
  • である.
    import numpy as np
    a=np.eye(4)
    print(a)
    [[1. 0. 0. 0.]
     [0. 1. 0. 0.]
     [0. 0. 1. 0.]
     [0. 0. 0. 1.]]
    
  • np.ones_like(a)は、配列aの形状に基づいて、全1の配列
  • を生成する.
  • np.zeros_like(a)配列aの形状に基づいて全0の配列
  • を生成する.
  • np.full_like(a,val)は配列aの形状に基づいて配列を生成し、各要素値はval
  • である.
    import numpy as np
    a=np.full((3,5),7)
    print(a)
    [[7 7 7 7 7]
     [7 7 7 7 7]
     [7 7 7 7 7]]
    like1=np.ones_like(a)
    print(like1)
    [[1 1 1 1 1]
     [1 1 1 1 1]
     [1 1 1 1 1]]
    like2=np.zeros_like(a)
    print(like2)
    [[0 0 0 0 0]
     [0 0 0 0 0]
     [0 0 0 0 0]]
    like3=np.full_like(a,3)
    print(like3)
    [[3 3 3 3 3]
     [3 3 3 3 3]
     [3 3 3 3 3]]
    
  • np.linspace()は、起止データに基づいて等間隔にデータを充填する配列
  • を形成する.
  • np.concatenate()は、2つ以上の配列を新しい配列に結合する
  • import numpy as np
    a=np.linspace(0,10,5)   #0 10      5  
    print(a)
    [ 0.   2.5  5.   7.5 10. ]
    b=np.linspace(5,20,5)
    print(b)
    [ 5.    8.75 12.5  16.25 20.  ]
    c=np.concatenate((a,b))
    print(c)
    [ 0.    2.5   5.    7.5  10.    5.    8.75 12.5  16.25 20.  ]
    

    ndarray配列の次元変換
    方法说明reshape(shape)は配列要素を変更せず、元の配列が変わらないshape形状のデータを返す.resize(shape)と.reshape()の機能は一致するが、元の配列を修正する.swapaxes(ax 1,ax 2)は、データnの次元を入れ替える.flatten()配列を次元化し、折り畳まれた1次元配列を返します.元の配列は変わりません.
    import numpy as np
    a=np.ones((2,3,4),dtype=np.int32)
    print(a)
    [[[1 1 1 1]
      [1 1 1 1]
      [1 1 1 1]]
    
     [[1 1 1 1]
      [1 1 1 1]
      [1 1 1 1]]]
    b=a.reshape(4,6)   #       ,           b
    print(b)
    [[1 1 1 1 1 1]
     [1 1 1 1 1 1]
     [1 1 1 1 1 1]
     [1 1 1 1 1 1]]
    print(a)    #        
    [[[1 1 1 1]
      [1 1 1 1]
      [1 1 1 1]]
    
     [[1 1 1 1]
      [1 1 1 1]
      [1 1 1 1]]]
    c=a.resize(3,8)       #         ,           c
    print(a)             #         
    [[1 1 1 1 1 1 1 1]
     [1 1 1 1 1 1 1 1]
     [1 1 1 1 1 1 1 1]]
    print(c)               #  c     ,    
    None
    
    
    import numpy as np
    a=np.ones((2,2,3),dtype=np.int32)
    print(a)                #   
    [[[1 1 1]
      [1 1 1]]
    
     [[1 1 1]
      [1 1 1]]]
    b=a.flatten()         #       b
    print(b)                #          ,      
    [1 1 1 1 1 1 1 1 1 1 1 1]
    print(a)                #        
    [[[1 1 1]
      [1 1 1]]
    
     [[1 1 1]
      [1 1 1]]]
    

    ndarray配列のタイプ変換
    new_a=a.astype(new_type)astype()メソッドでは、2つのタイプが一致していても、元のデータをコピーする新しい配列が必ず作成されます.
    import numpy as np
    a=np.ones((3,4),dtype=np.int)
    print(a)        #      
    [[1 1 1 1]
     [1 1 1 1]
     [1 1 1 1]]
    b=a.astype(np.float)        #              
    print(b)                #           b
    [[1. 1. 1. 1.]
     [1. 1. 1. 1.]
     [1. 1. 1. 1.]]
    print(a)                #   a        
    [[1 1 1 1]
     [1 1 1 1]
     [1 1 1 1]]
    

    ndarray配列からリストへの変換
    ls=a.tolist()
    import numpy as np
    x1=np.array([1, 2, 3])
    x2=x1+3
    x3=x1+6
    a=np.array((x1,x2,x3))
    print(a)        #   
    [[1 2 3]
     [4 5 6]
     [7 8 9]]
    b=a.tolist()           #        
    print(b)                #       b
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    print(a)                #         
    [[1 2 3]
     [4 5 6]
     [7 8 9]]