5. Numpy I

Daisy 🌼·2022년 7월 11일
0

Python (Numpy, Pandas)

목록 보기
5/8
post-thumbnail

학습목표

  • numpy는 파이썬으로 진행되는 모든 데이터 분석과 인공지능 학습에 있어 필수적으로 이해
  • numpy는 Numerical Python의 약자로 일반적으로 과학계산에서 많이 사용하는 선형대수의 계산식을 파이썬으로 구현할 수 있도록 도와주는 라이브러리로, 기존 가장 대중적으로 쓰이던 도구는 MATLAB인데 MATLAB의 역할을 파이썬의 도구로 생각하면 좋음
  • numpy는 numpy 자체로도 많이 사용되지만 이후에 사용되는 SciPy나 Pandas의 base 객체로도 사용되며 numpy에서 사용되는 다양한 코드 표현법을 그대로 pytorch와 tensorflow에 사용하는 경우가 많아 numpy의 활용법은 반드시 알아둘 필요가 있음

1. 행렬과 매트릭스의 코드 표현법

1-1. 코드로 방정식 표현하기


  • 리스트 형태로 표현
  • 노름, 닷 프로덕트 등을 리스트로만 하면 전부 구현을 해야하는데 시간이 오래걸림
    → 누군가 구현해놓음 (파이썬 장점)

1-2. Numpy

  • Numerical python
  • 파이썬의 고성능 과학 계산용 패키지
  • Matrix와 Vector 같은 Array 연산의 사실상의 표준
  • 한글로 넘파이로 주로 통칭 (넘피, 늄파이)
  • 일반 리스트에 비해 빠르고, 메모리가 효율적
  • 반복문 없이 데이터 배열에 대한 처리를 지원
  • 선형대수와 관련된 다양한 기능 제공
  • C, C++ 포트란 등의 언어와 통합가능
  • 반복문 없이 데이터 배열에 대한 처리를 지원하는 부분이 중요!
    numpy, pandas는 while 루프 for 루프를 쓰지 않고 처리를 함!

1-3. numpy install


2. ndarray

2-1. import


2-2. array creation

  • 먼저 리스트에 시퀀스형 자료[1, 4, 5, 8]를 넣어주고, d type(float)을 열어주면 numpy array를 열어줌 (= 리스트랑 거의 같은 개념이지만)
  • 생성된 배열을 ndarray 객체라고 함
  • numpy는 하나의 데이터 타입만으로 배열을 넣을 수 있음
  • 리스트는 여러가지 데이터 타입으로 들어갔지만 [1, 0.5, 0.5] 등 넘파이 어레이는 1가지 데이터 타입만 지원함!

  • 64비트

  • shift+tab을 누르면 array 함수 구성이 어떻게 되는지 보여주는데 선언해주는 것이 좋은 습관!

  • 왼측 numpy array는 데이터가 자례대로 메모리에 할당이 돼 붙어있어, 장점으로 메모리 접근성이 좋고, 연산이 좋아짐
  • 우측 파이썬 리스트는 0~10이 있다면, static한 공간 어딘가에 있음 (주소값을 리스트에 차례대로 저장) → 변환이 쉬움


  • 메모리를 사용하는 것에 큰 특징이 있음 (예시 ▼)

  • shape : dimension 구성
  • dtype : 데이터 타입

  • float64 = 데이터 하나가 8 bite


2-3. array shape

  • shape : 2멘션 어레이 → 매트릭스 → 선형대수의 랭크 → 3 by 3의 매트릭스 → (3, 3)과 같이 튜플로 출력
  • tensor : 선형대수에서 데이터 값을 표현하는 기법

2-4. array shape (vector)

  • 벡터를 표현할 때 옆으로 했는데, 밑으로 해도 됨
    하지만 옆으로 표현했을 때 첫번째 그림은 4라는 값이 칼럼의 개수

2-5. array shape (matrix)

  • shape : 3 by 4
  • 지금의 그림은 하나의 랭크가 증가하며 메트릭스가 되면 4가 밀리게 되고 raw가 증가해서 3이 됨

2-6. array shape (3rd order tensor)

  • 3 tensor가 되면 한 칸씩 또 밀리게 됨

  • ndim : 디멘션이 몇 차원? 랭크의 개수
  • eliment의 개수는 4 x 3 x 4 = 48

2-7. array dtype

  • dytype = int 정수로써 1가지 데이터 타입만 선언한 것

  • C 데이터 타입과 거의 같다.
  • integer로 2^63승까지 표현 가능

2-8. array nbytes

  • 파라미터가 억단위이면 매우 커짐
  • 일반적으로는 float 64를 주로 사용

3. Handling shape

3-1. reshape

  • reshape : 모양을 바꾸는 것이지만 사이즈의 개수 (데이터 개수)는 변하지 않음



  • -1 : 뒤에가 지정되고 앞을 지정하지 않더라도 알아서 조정해줄 때 -1을 넣어줌 (바꿔도 됨)
  • 이해 안 되면 공부!!
  • text_matrix 자체는 아직 할당이 일어나지 않았기 때문에, 바뀌지 않았고 결과만 출력된 것임

3-2. flatten

  • reshape의 하나의 기능을 떼서 가져온 것으로, 다차원 어레이를 1차원으로 펴주는 것


4. indexing & slicing

4-1. indexing for numpy array


  • 0,0에 10을 할당한 모습

  • 1,2에 5를 할당한 모습


4-2. slicing for numpy array

  • 행과 열을 나눠 슬라이싱 가능
  • a[:,2:] = 3,4,5,6,9,10
  • a[1,1:3] = 7,8
  • a[1:3]

  • 진한 검은 테두리 부분


  • 예시





  • 빨간색이 출력값


profile
세상을 이롭게하는 AI Engineer

0개의 댓글