이미지출처
syntax 약속
본 포스팅은 KT 에이블스쿨 교육내용을 바탕으로 제 나름대로 정리하여 작성하였습니다


넘파이란?

배열을 이용하게 해줄 수 있는 파이썬 라이브러리
파이썬에서 가장 유명한 라이브러리 중 하나
list랑 비슷하다

왜씀?

넘파의 각종 내장 메소드들을 이용하여 요소들을 한번에 처리할 수 있다.
예를들어 list같은경우는 list * 숫자 를 하면 숫자만큼 리스트가 복사되었지만,
배열에서는 요소에 값을 하나하나 곱해줄 수 있다.
리스트는 저거 하려면 for문으로 만들어줘야 한다... ㅋㅋ
하지만 장점만 있는건 아니다. 여러가지 자료형으로 존재할 수 있는 list 와 달리 한가지 자료형으로만 존재할 수 있다.


1. 용어 정의

  • axis : 배열의 축
  • rank : 축의 갯수, 혹은 차원이라고 부른다.(선형대수학)
  • shape : 배열의 크기(=축의 길이)

축 번호 매기기

  • 1차원 배열 : 축이 하나뿐(행)이므로 당연히 행이 axis 0 이다.
  • 2차원 배열 : 행, 열 순으로 axis 0, axis 1 이다.
  • 3차원 배열 : 높이, , 순으로 axis0, axis1, axis2 이다. 혼동하지 말자

2. 라이브러리 불러오기

import numpy as np

import를 이용해 불러올 수 있고, 보통 as 를 이용해 np 라는 별칭으로 사용한다.


3. 배열 만들기

3.1. 배열 생성

np.array(리스트)

3.2 배열 정보 확인

배열의 정보를 확인할 수 있는 다양한 속성(메소드와 함수와는 또 다름)들이 있다.

차원 확인

리스트.ndim

배열의 차원(=축의 갯수)를 int 로 반환한다.

형태(크기) 확인

리스트.shape

배열의 크기를 tuple로 반환한다.

  • 1차원: (x,)
  • 2차원: (x, y)
  • 3차원: (x, y, z)
    *왼쪽부터 axis0, axis1, axis2 이다.

자료형 확인

리스트.dtype

배열의 자료형을 반환한다.
배열은 한가지 자료형만 가질 수 있는것을 기억하자

reshape(형태변환)

배열.reshape(원하는 형태)

배열을 다양한 형태(shape)로 변환해준다.
배열에 포함된 요소가 사라지지 않는 형태, 즉 요소의 숫자가 같은 형태로만 변활할 수 있다.
-> (원래 배열의 행 수) * (원래 배열의 열 수) = (바꾸려는 함수의 행수) * (바꾸려는 함수의 열 수)

  • -1 을 이용하여 원하는 행 수와 열 수만 지정하여Reshape할 수 있다.

4. 배열 조회

인덱싱

당연히 첫 번째 값은 0 부터 시작한다.
1차원 배열의 인덱싱은 리스트랑 일치하기에 생략

syntax
arrayname[row, column]

arrayname 배열명
row 인덱싱 하고 싶은 행, int값이다.
column 인덱싱 하고 싶은 열, int 값이다.
row, column 부분에 리스트를 넣어서 여러 값을 조회 가능하다.
':' 를 이용하여 전체를 조회 할 수 있다.

슬라이싱

범위를 지정하여 위치의 요소를 조회 할 수 있다. 인덱싱이랑 매우 유사하다.
마지막 범위 값은 대상에 포함되지 않는다는 점을 유의하자!
':' 를 이용해도 마지막 인덱스 값은 포함되지 않는다.
즉, 배열[1:M, 2:N]이라면 1 ~ M-1행, 2 ~ N-1열이 조회 대상이 된다.

syntax
arrayname[rowarea, columnarea]

arrayname 배열명
rowarea 슬라이싱 하고 싶은 행의 범위, 행N:행M 형태로 나타낸다.
물론 행1, 행2 의 값은 int 이다.
columnarea 도 열의 범위인 점을 제외하고는 같기에 생략.

한눈에 보는 인덱싱과 슬라이싱

조건 조회(불리안 방식)

조건에 맞는 요소를 선택하는 선택하는 방식이다.
조회 결과는 '1차원 배열' 이 된다.

syntax
arrayname[conditions]

conditions 조회를 원하는 조건을 의미한다.
&| 를 이용하여 여러가지 조건을 조회할 수 있다. 각각 andor 역할을 수행한다.

예시

# 2차원 배열 만들기
score= np.array([[78, 91, 84, 89, 93, 65],
                 [82, 87, 96, 79, 91, 73]])

# 짝수만 조회
print(score[score % 2 == 0])
[78 84 82 96]

5. 배열 연산

다양한 함수 혹은 연산자를 이용하여 배열 성분간의 다양한 연산을 할 수 있다.
행렬에 대한 연산도 가능하나 선형대수에 대한 도메인 지식이 필요하므로 생략하겠다.

  • 덧샘 : + 혹은 np.add()
  • 뺄샘 : - 혹은 np.substract()
  • 곱샘 : * 혹은 np.multiply()
  • 나눗샘 : / 혹은 np.divie()
  • 제곱 : ** 혹은 np.power()
  • 제곱근 : np.sqrt()

    끝!
profile
이상한사람

0개의 댓글