4일차-2 Python 프로그래밍 & 라이브러리

정지원·2024년 2월 24일
0

에이블 스쿨 복습

목록 보기
7/51
post-thumbnail

6. Numpy

  • 빠른 수치 계산을 위해 C언어로 만들어진 Python 라이브러리
  • 벡터와 행렬 연산에 편리한 기능들을 제공
  • 데이터 분석용 라이브러리인 pandas와 Matplotlib의 기반으로 사용된다.
  • Array(벡터, 행렬) 단위로 데이터 관리

1) 라이브러리 불러오기

import numpy

import numpy as np

from numpy import array
  • 두 번째의 import numpy as np를 가장 많이 사용한다. 별칭을 주어 쉽게 사용하기 때문이다.

2) 배열만들기

Numpy 용어 정리

* Axis: 배열의 각 축 
	ex) axis = 0(각 행), axis = 1(각 열)
* Rank: 축의 개수(차원)
* Shape: 축의 길이
	ex) (3, 4)

배열 만들기

  • np.array() 함수를 사용해서 배열 생성
  • 대부분 리스트로부터 배열을 만들거나, 머신러닝 관련 함수 결과값이 배열이 된다.

  • 1차원
    • Rank: 1
    • Shape: (5, )
  • 2차원
    • Rank: 2
    • Shape: (3, 5)
    • '5개의 열을 가진 1차원 데이터가 3개'라고 이해하면 쉽다.
  • 3차원
    • Rank: 3
    • Shape: (2, 3, 5)
    • '3행 5열을 가진 2차원 데이터가 2개라고 이해하면 쉽다.

함수들

  • arr.ndim: 차원확인
  • arr.dtype: 요소 자료형 형식 확인
  • arr.shape: 형태나 크기 확인
  • arr.reshape: 배열에 포함된 요소가 사라지지 않는 형태로 변환 가능
    • ex) (3, 4) → (2, 6) → (4, 3) → (12, 1) → (6, 2)
    • 이런식으로 요소 개수만 변하지 않으면 된다.
    • 여기서 요소 개수는 각 행렬을 곱하면 알 수 있다.
    • (-1, m) 이나 (n, -1)을 사용하여 -1의 자리에는 행(n) 이나 열(m)크기를 한 쪽만 지정할 수 있다.

이외에 배열을 만드는 함수들이 있다

  • np.zeros((행, 열)): 0으로 행, 열 만큼 채운진 배열
  • np.ones((행, 열)): 1로 행, 열 만큼 채워진 배열
  • np.full(행, 열), 값.): 값. 으로 행, 열 만큼채워진 배열
  • np.eye(x): x, x 처럼 정방향 행렬
  • np.random.random(): 랜덤 값으로 채운 배열

함수와 메서드

함수: np.reshape(), np.mean() 등

  • 리스트와 튜플 형태로 가능
  • np array로 변환해서 평균을 구해 줌

메서드: a.reshape(), a.reshape() 등

  • np array만 사용 가능

3) 배열의 인덱싱, 슬라이싱

인덱싱

요소조회

  • arr1[ 행 인덱스, 열 인덱스]: 한번에 가져옴
  • arr1[행 인덱스][열 인덱스]: 행 가져오고 열을 가져옴
    • 위 방법의 결과는 같음
    • ex) arr1(1, 3) 행의 1번 인덱스, 열의 3번째 인덱스

행 조회

  • arr1[행 인덱스, :] 또는 arr1[행 인덱스]

    • ex) arr1[1, :] 행의 1번 인덱스의 행과 모든 열
    • ex) arr1[1] 행의 1번 인덱스
  • arr1[[행1, 행2]] 혹은 arr1[[행1, 행2], :]

    • ex) arr1[[1, 2]] 1번 인덱스 행과 2번 인덱스 행
    • ex) arr1[[0:2]] 0번 인덱스 행부터 1번 인덱스 행까지

슬라이싱

  • arr1[시작: 끝]
    • arr1[0 : 2] 0번 인덱스 행부터 1번 인덱스 행까지
  • arr1[행인덱스, 시작:끝]
    • arr1[0, 0:2] 0번 인덱스 행에서 열의 0번에서 1번 인덱스까지
  • arr1[시작:끝, 시작:끝]
    • arr1[0:3, 1:3] 행 인덱스 0~2, 열 인덱스 1~2

조건 조회

  • 조회 결과는 1차원으로 나옴
score= np.array([[78, 91, 84, 89, 93, 65],
		  		[82, 87, 96, 79, 91, 73]])
print(score[score >= 90])<code>

[91 93 96 91]

4) 배열의 연산

사칙연산

  • 배열 사이에 더하기, 빼기, 곱하기, 나누기. 제곱, 제곱근 가능하다.
  • 더하기: +, np.add
  • 빼기: -, np.substract
  • 곱하기: *, np.multiply
  • 나누기: /, np.divide
  • 제곱: **, np.power
  • 제곱근: np.sqrt

배열 집계

  • np.sum(), array.sum()
    • axis = 0: 열 방향 집계
    • axis = 1: 행 방향 집계
a = np.array([[1,5,7],
	      	[2,3,8]])
print(np.sum(a))
print(np.sum(a, axis = 0))
print(np.sum(a, axis = 1))

26 # 전체 합
[3 8 15] # 열 방향 합
[13 13] # 행 방향 합

자주 사용되는 함수들

1. np.argmax(), np.argmin()

2. np.where

  • np.where(조건문, True일때 값, False일 때 값)
a = np.array([1,3,2,7])
np.where(a > 2, 1, 0)

array([0, 1, 0, 1])

  • True일때 값에 a 변수를 넣어서 원래의 수가 출력되도록 가능.
    ex) np.where( a > 2, a, 0)
    array([0, 3, 0, 7) 나옴

[참고] 한기영 강사님 수업자료

profile
뒤늦게 프로그래밍을 시작한 응애

0개의 댓글