Numpyの使い方


Numpy

  • 多次元配列
  • を処理するために使用される.
  • Python listと比べると、
    メモリ使用率は最大
  • import宣言

    import numpy as np
    arr = np.array([0,1,2,3,4])

    データ型処理

    1. float값들로 배열만들기
    arr = np.array([1,2,3,4], dtype=float)
    # array([1.,2.,3.,4.])
    
    2. 타입보기
    arr.dtype
    # dtype('float')
    
    3. 배열 자료형 바꾸기
    arr.astype(int)
    # array([1,2,3,4])
    
    4. 배열 0으로 초기화하기
    np.zeros(10, dtype=int)
    
    5. 배열 3x5를 모두1로 초기화하기 
    np.ones((3,5), dtype=float)
    
    6. 0~20사이를 2씩 띄워서 초기화하기
    np.arrage(0, 20, 2)
    # array([0,2,4,6....18])
    
    7. 범위값을 5개로 나눠서 데이터 선언하기
    np.linspace(0, 1, 5)
    # array([0, 0.25, 0.5, 0.75, 1.])

    乱数宣言

    기본적으로 랜덤으로 선언할때 
    default 값으로 0~1사이의 값으로 나온다.
    
    1. 2x2 난수선언
    np.random.random((2,2))
    
    2. 2x2 난수이고, 0~1값으로 선언
    np.random.normal(0,1, (2,2))
    
    2. 2x2 난수이고, 0~10값인 int형으로 선언
    np.random.randint(0,10, (2,2))

    宣言されたタイルデータ形状の表示


    1. 선언
    arr = np.random.randint(10, size=(3,4))
    
    2. 차원
    arr.ndim 
    # 2
    
    3. 배열 모양
    arr.shape # (3, 4)
    
    4. 배열 크기
    arr.size 
    # 12
    
    5. 리스트 데이터 타입 보기
    arr.dtype 
    # dtype('int64')
    
    6. 리스트 자료형 보기
    type(array) 
    # class 'numpy.ndarray'

    アクセス配列値


    arr = np.arange(7)
    # array([0,1,2,3,4,5,6])
    
    1. 값 접근
    x[3] 
    # 3
    
    x[7] 
    # index 7 is out of bounds
    
    2. 값 변환
    x[0] = 10
    # array([10,1,2,3,4,5,6])
    
    3. 범위값 추출 ( 슬라이싱 )
    x[1:4]
    # array([1,2,3])
    
    x[1:]
    # array([1,2,3,4,5,6])
    
    x[:4]
    # array([0,1,2,3])
    
    x[::2]
    # array([0,2,4,6])
    

    2 Dアレイへのアクセス


    1. 1부터 15까지 들어있는 (3,5)짜리 배열 선언
    arr = np.arange(1, 16).reshape(3,5)  
    
    2. (2,3) 인덱스의 요소 선택
    arr[2,3]
    # 14
    
    3. 행은 인덱스 0부터 인덱스 1까지, 
    열은 인덱스 1부터 인덱스 3까지 선택
    arr[0:2,1:4]
    
    #
    [[2 3 4]
    [7 8 9]]

    アレイの外観を変更する


    1.선언
    arr = np.arange(8)
    x.shape
    # (8,)
    
    2. 2x4 모양 변환
    arr = x.reshape((2,4))
    #
    array([[0, 1, 2, 3],
           [4, 5, 6, 7]]) 
    
    arr.shape
    # (2, 4)

    1 Dアレイの接続


    x = np.array([0, 1, 2])
    y = np.array([3, 4, 5])
    
    np.concatenate([x ,y])
    # array([0,1,2,3,4,5])

    2 Dアレイの水平接続


    x = np.arange(0, 4).reshape(2,2) 
    y = np.arange(4, 8).reshape(2,2) 
    
    1. axis축을 1번으로
    np.concatenate([x ,y], axis=1)
    
    #
    array([[0, 1, 4, 5],
           [2, 3, 6, 7]])

    垂直接続2 Dアレイ


    x = np.arange(0, 4).reshape(2,2) 
    y = np.arange(4, 8).reshape(2,2) 
    
    1. axis축을 0번으로
    np.concatenate([x ,y], axis=0)
    
    #
    array([[0, 1],
           [2, 3],
           [4, 5],
           [6, 7]])

    2 Dアレイを水平、垂直に分割する


    1. 가로
    arr = np.arange(16).reshape(4,4)
    left, right = np.split(arr, [3], axis = 1)
    1. 세로
    arr = np.arange(16).reshape(4,4)
    left, right = np.split(arr, [3], axis = 0)

    アレイ演算


    numpyは高速配列演算をサポート

    きほんえんざん

    arr = np.arange(4)
    # array([0,1,2,3])
    
    1. 더하기
    arr + 5
    # array([5, 6, 7, 8])
    
    2. 빼기
    arr - 5
    # array([-5, -4, -3, -2])
    
    3. 곱하기
    arr * 5
    # array([0, 5, 10, 15])
    
    4. 나누기
    arr / 5
    # array([0., 0.2, 0.4, 0.6])

    マトリックス間演算


    x = np.arange(4).reshape((2, 2))
    y = np.arange(4).reshape((2, 2))
    
    x + y
    #
    array([[0, 2],
           [4, 6]])
           
    x - y
    #
    array([[0, 0],
           [0, 0]])

    マトリックス間演算2(ブロードキャスト)


    arr = np.arange(9).reshape((3, 3))
    
    arr + np.array((1,2,3))
    
    #
    array([[ 1,  3,  5],
           [ 4,  6,  8],
           [ 7,  9, 11]])
    arr = np.arange(3).reshape((3, 1))
    
    arr + np.arange(3)
    
    #
    array([[0, 1, 2],
           [1, 2, 3],
           [2, 3, 4]])

    集約関数

    arr = np.arange(10).reshape((2,5))
    # 결과
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    
    1. 배열의 합
    np.sum(arr)
    # 45
    
    2. 배열의 최소값
    np.min(arr)
    # 0
    
    3. 배열의 최대값
    np.max(arr)
    # 9
    
    4. 배열의 평균
    np.mean(arr)
    # 4.5
    
    5. 표준편차 계산
    np.std(arr)
    # 2.8722813232690143

    集約関数2

    arr = np.arange(8).reshape((2,4))
    # 결과
    array([[0, 1, 2, 3],
           [4, 5, 6, 7]])
          
    1. 행단위로 계산
    np.sum(arr, axis=0)
    # array([ 4,  6,  8, 10])
    
    2. 열단위로 계산
    np.sum(arr, axis=1)
    array([ 6, 22])

    マスク演算

    True False 배열을 통해 특정값을 뽑아내는 방법
    
    arr = np.arange(5)
    # array([0,1,2,3,4])
    
    1. 조건값 미만인지 확인
    arr < 3
    # array([ True,  True,  True, False, False])
    
    2. 조건값 이상인지 확인
    arr > 5
    # array([False, False, False, False, False])
    
    3. 조건값에 해당하는 값들 추출
    arr[arr < 3]
    # array([0, 1, 2])

    デフォルトリストをnumpyリストに変換

    arr_list = [1,2,3,4,5]
    numpy_list = np.array(arr_list)
    
    type(arr_list)
    # list
    
    type(numpy_list)
    # numpy.ndarray