データ分析用ライブラリ(2)


この記事は、eliceの2021 NIPA AIオンライントレーニングを聞いた後、個人学習のために整理したものです.

2.データ処理用ライブラリNumpy


1)Numpyとは?


NumpyはNemerical Python、すなわち数値Pythonを意味する
Pythonは大規模な多次元配列の処理を支援するライブラリです.
大規模は多くのことを意味し,多次元は2次元以上を意味し,配列はデータをリストすることを意味する.
リファレンス🎈 PythonにはPandas、Numpy、Matplotlibなどのライブラリがあります.
では、なぜ大規模な多次元アレイを理解するのでしょうか.
👉 ほとんどのデータは数字の配列と見なすことができるからです!
画像と音声データはデジタル配列で表すことができる.
大量のデータをデジタル配列と見なし、Numpyで処理します!

Numpyプロパティ


文を繰り返すことなく並べ替える
Pythonリストに比べて、より高速なコンピューティングとより高いメモリ使用率をサポート

それとは違うのは

  • list配列を生成し、出力フォーマット
  • を検証する.
    list_arr = list(range(5))
    print(list_arr) # [0, 1, 2, 3, 4] → 콤마(,)로 구분
    print(type(list_arr)) # <class 'list> 자료형이 리스트!
  • NumPyアレイ作成および出力形式検証
  • Numpyはライブラリなので、importキーを使用してロードする必要があります.import numpy as np:numpyモジュールは「np」別名を読み込み、付与するndarray:n次元配列
    import numpy as np
    
    np_arr = np.array(range(5)) 
    
    print(np_arr) # [0 1 2 3 4] → 공백으로 구분
    print(type(np_arr)) # <class 'numpy.ndarray'>
    以下は1次元リスト!スペースで区切られたのはn次元配列です!

    実習シナリオの作成


    0から4までの連続数を含む配列を作成し、arrayという配列に保存します.
    import numpy as np
    
    array = np.array(range(5))
    print(array)
    
    >>> [0 1 2 3 4]

    2)アレイの基礎


    配列内のデータ型dtype


    Pythonリストとは異なり、同じデータ型しか格納できません!
    リスト:[1,1,4,True,[S]複数データO.K🙆‍♀️🙆‍♂️
    Nompe:[11.4True“S”]🙅‍♀️🙅‍♂️ 単一データのみ許可!astype()他のデータ型に変換astype(int)整数型に変換!
    arr = np.array([0, 1, 2, 3, 4], dtype = float) # float는 실수형
    
    print(arr) # [0. 1. 2. 3. 4.] # float형으로 데이터 타입을 지정하였으므로 정수 부분 뒤에 .이 나타남
    print(arr.dtype) # 'float64'
    print(arr.astype(int)) # [0 1 2 3 4] 

    dtypeタイプ


    dtypeの例は、様々なタイプの整数タイプ1、2、3 i、int、int 32、int 64、i 8 float実数タイプ0.2、1.4 f、float、float 32、float 64、f 8 str文字列タイプ「S」、「s」str、U、U 32 boolブールタイプTrue、Falseを示す.bool_
    最もよく使われる
  • intです.int64 = i8
  • int 32、int 64などの後の数字は容量を表す.64位は32位より大きいでしょう.😘
  • float_ = float64 = f8
  • str UnicodeのUを表す
  • ブールは真偽を判断し、?も使用した.
  • カレンダ配列のプロパティ


    次元に関連するプロパティ:ndim&shapendim:n+dimension,n次元shape:形状の関数、(row, column);1行のみの場合、(데이터 갯수, )
    # 1차원배열.py
    
    list = [0, 1, 2, 3]
    arr = np.array(list)
    
    print(arr.ndim) # 1 → 1차원
    print(arr.shape) # (4, ) → 4개의 값이 한 행에 존재
    # 2차원배열.py
    
    list = [[0, 1, 2], [3, 4, 5]]
    arr = np.array(list)
    
    print(arr.ndim) # 2 → 2개의 행이니까 2차원
    print(arr.shape) # (2, 3) → 2개의 행이 3개의 열로 존재
    スペシフィケーションのサイズプロパティとシェイプの調整arr.sizelen(arr)の概念は違います.
    sizeは配列内の要素の個数lenは行数です(ただし、1次元では要素の個数を返します)
    arr = np.array([0, 1, 2, 3, 4, 5])
    
    print("arr.shape: {}".format(arr.shape)) # arr.shape: (6, )
    print("배열 요소의 수: {}".format(arr.size)) # 배열 요소의 수: 6
    print("배열의 길이: {}".format(len(arr)) # 배열의 길이 : 6
    
    
    arr.shape = 3, 2 # arr.shape를 (3, 2)로 바꿈
    
    print("arr.shape: {}".format(arr.shape)) # arr.shape: (3, 2)
    print("배열 요소의 수: {}".format(arr.size)) # 배열 요소의 수: 6
    print("배열의 길이: {}".format(len(arr)) # 배열의 길이 : 3

    実習手配の基礎(1)

    import numpy as np
    
    print("1차원 array")
    array = np.array(range(10))
    print(array)
    
    # 1. array의 자료형을 출력해보세요.
    print(type(array))
    
    # 2. array의 차원을 출력해보세요.
    print(array.ndim)
    
    # 3. array의 모양을 출력해보세요.
    print(array.shape)
    
    # 4. array의 크기를 출력해보세요.
    print(array.size)
    
    # 5. array의 dtype(data type)을 출력해보세요.
    print(array.dtype)
    
    # 6. array의 인덱스 5의 요소를 출력해보세요.
    print(array[5])
    
    # 7. array의 인덱스 3의 요소부터 인덱스 5 요소까지 출력해보세요.
    print(array[3:6])

    💎 属性に属するndim, shape, size, dtype.とともに書く

    実習手配の基礎(2)

    import numpy as np
    
    print("2차원 array")
    #1부터 15까지 들어있는 (3,5)짜리 배열을 만듭니다.
    matrix = np.array(range(1,16))
    matrix.shape = 3,5
    print(matrix)
    
    
    # 1. matrix의 자료형을 출력해보세요.
    print(type(matrix))
    
    # 2. matrix의 차원을 출력해보세요.
    print(matrix.ndim)
    
    # 3. matrix의 모양을 출력해보세요.
    print(matrix.shape)
    
    # 4. matrix의 크기를 출력해보세요.
    print(matrix.size)
    
    # 5. matrix의 dtype(data type)을 출력해보세요.
    print(matrix.dtype)
    
    # 6. matrix의 dtype을 str로 변경하여 출력해보세요.
    print(matrix.astype(str)) # 'str'도 가능
    
    # 7. matrix의 (2,3) 인덱스의 요소를 출력해보세요.
    print(matrix[2,3])
    
    # 8. matrix의 행은 인덱스 0부터 인덱스 1까지, 열은 인덱스 1부터 인덱스 3까지 출력해보세요.
    print(matrix[0:2,1:4])

    💎 インデックスは0から始まることを覚えておいてください.

    3) Indexing & Slicing


    検索データをインデックス、切り取りデータをsleingと呼びます.

    indexing


    索引による値の検索
    numpyモジュールのarange関数(np.arange(start, stop, step, dtype))は、半開放区間[start,stop)におけるstepサイズに等しい数値を配列形式で返す関数である.
    stopパラメータの値は渡さなければなりませんが、startはstepを渡すとは限りません.start値が渡されていない場合はデフォルトで0、step値が渡されていない場合はデフォルトで1です.
    dtypeの場合、結果を返す配列のタイプを指定します.dtype値が与えられていない場合、伝達された他のパラメータからtypeが推定されます.
    出典:https://codepractice.tistory.com/88[コーディング練習]
    # 1차원배열.py
    
    x = np.arange(7)
    
    print(x) # [0 1 2 3 4 5 6]
    pritn(x[3]) # 3
    print(x[7]) # IndexError : index 7 is out of bounds
    
    x[0] = 10 # 데이터 변경하기
    print(x) #  [10 1 2 3 4 5 6]
    # 2차원배열.py
    
    x = np.arange(1, 13, 1) # 
    
    x.shape = 3, 4
    print(x)
    # [[1 2 3 4] [5 6 7 8] [9 10 11 12]]
    print(x[2, 3]) # 12

    slicing


    配列の一部をインデックスとして取得する値
    動作はPythonのlistと似ています.
    # 1차원배열.py
    
    x = np.arange(7)
    
    print(x) # [0 1 2 3 4 5 6]
    
    pritn(x[1:4]) # [1 2 3]
    print(x[1: ]) # [1 2 3 4 5 6]
    print(x[ :4]) # [0 1 2 3]
    print(x[::2]) # [0 2 4 6]
    # 2차원배열.py
    
    x = np.arange(1, 13, 1) # 
    x.shape = 3, 4
    
    print(x)
    # [[1 2 3 4] [5 6 7 8] [9 10 11 12]]
    pritn(x[1:2, :2:3]) # [[5]]
    print(x[1:, :2]) # [[5 6] [9 10]]

    Boolean indexing


    Boolean maskを使用して、アレイ内の各要素の選択方法を指定します.
    ❔Boolean mask:True/Falseマスクアレイ
  • 条件を満たすデータ
  • を取得する.
  • TrueかFalseか教えてください.
  • Trueの対応する要素を問い合わせることができます.
  • x = np.arange(7)
    
    print(x) # [0 1 2 3 4 5 6]
    print(x < 3) # [True True True False False False False]
    print(x > 7) # [False False False False False False False]
    
    print(x[x < 3]) # [0 1 2]
    print(x[x % 2 == 0] # [0 2 4 6]

    Fancy indexing


    インデックス配列を渡すことで、配列内の各要素の選択を指定します.
    つまり、検索する場所(=インデックス)にはどのような値がありますか?
    # 인덱스로 찾기
    x = np.arange(7)
    
    print(x) # [0 1 2 3 4 5 6]
    print(x[[1, 3, 5]]) # 인덱스 번호 [1, 3, 5] 자리에 뭐가 있는지 알려줌 → [1, 3, 5]
    # 행으로 찾기
    x = np.arange(1, 13, 1).reshape(3, 4)
    
    print(x)
    # [[1 2 3 4] [5 6 7 8] [9 10 11 12]]
    print(x[[0, 2]]) # 0번째 행, 2번째 행 → [[1 2 3 4] [9 10 11 12]]
    👉 IndexingとSlicingの適切な組み合わせは、必要な要素を指定するために使用できます!
    x = np.arange(1, 13, 1).reshape(3, 4)
    print(x)
    # [[1 2 3 4] [5 6 7 8] [9 10 11 12]]
    
    print(x[1:2, 2]) # [7]
    print(x[[0,2], 2]) # [ 3 11]
    print(x[[0,2], :2]) # [[ 1 2] [ 9 10]]

    実習インデックスとポリシー

    import numpy as np
    
    matrix = np.arange(1, 13, 1).reshape(3, 4)
    print(matrix)
    
    # 1. Indexing을 통해 값 2를 출력해보세요.
    answer1 = matrix[0,1]
    
    # 2. Slicing을 통해 매트릭스 일부인 9, 10을 가져와 출력해보세요.
    answer2 = matrix[2, :2] # matrix[2:, :2] → [[9 10]]
    
    # 3. Boolean indexing을 통해 5보다 작은 수를 찾아 출력해보세요.
    answer3 = matrix[matrix < 5]
    
    # 4. Fancy indexing을 통해 두 번째 행만 추출하여 출력해보세요.
    answer4 = matrix[1] # matrix[[1]] → [[5 6 7 8]]
    
    # 위에서 구한 정답을 출력해봅시다.
    print(answer1)
    print(answer2)
    print(answer3)
    print(answer4)