NumPy : Numerical Python (수치적 파이썬)
-> Python에서 대규모 다차원 배열을 다룰 수 있게 도와주는 라이브러리
데이터의 대부분은 숫자 배열로 볼 수 있기 때문에 NumPy 라이브러리를 다룰 줄 알아야 많은 데이터를 쉽게 다룰 수 있다.
NumPy는 반복문 없이 배열을 빠르게 처리할 수 있다.
-> List에 비해 빠른 연산 지원, 메모리의 효율적 사용
그렇다면 List는 NumPy와 구체적으로 어떻게 다를까?
아래는 list 배열을 생성하고 출력한 코드이다.
그리고 아래는 NumPy 라이브러리를 사용해 numpy 배열을 생성하고 출력한 코드이다.
(NumPy는 라이브러리이므로 import 키워드를 이용해 불러온다.)
ndarray는 n차원의 배열을 의미한다. (n-dimensional array)
또 NumPy는 파이썬의 List와 달리 같은 데이터 타입만 저장 가능하다.
dtype 파라매터를 이용해 원하는 타입을 설정할 수 있다.
타입을 바꾸고 싶을 때는 astype()을 통해 바꿀 수 있다.
(참고 : astype() 함수는 기존의 배열을 ‘복사’하여 데이터 자료형을 변환해 반환한다.)
차이점을 정리하면 다음과 같다.
List | NumPy | |
원소간 구분 | 콤마(,)로 구분 | 공백으로 구분 |
클래스 타입 | list | numpy.ndarray |
차원 | 1차원 배열 | n차원(다차원) 배열 |
배열의 데이터 타입 | 여러 데이터 타입 가능 | 단일 데이터 타입 |
정리)
Numpy 라이브러리는 효율적인 데이터분석이 가능하도록 N차원의 배열 객체를 지원
Numpy의 배열은 파이썬의 list()보다도 빠른 연산과 효율적인 메모리 사용이 가능하기 때문에 빅데이터 분석 등에 널리쓰이는 매우 강력한 라이브러리라고 할 수 있다.
NumPy 배열의 데이터 타입인 dtype에는 아래와 같이 다양한 타입과 표현이 있다.
다음으로 ndarray가 가지고 있는 배열의 여러 정보를 나타내는 속성값들에 대해 알아보겠다.
ndim : 행의 수를 반환한다.
shape : 행과 열의 수를 함께 반환한다.
1차원 배열의 경우 shape가 콤마(,) 뒤에 아무것도 오지않는 형태로 반환된다.
size : 배열 요소의 수를 반환한다.
len(배열) : 배열의 길이를 반환한다. (배열 세로 행의 개수라고 생각하면 된다.)
그리고 이 arr이라는 배열을 shape에 값을 지정해줌으로써 다음과 같이 조절할 수 있다.
배열 요소의 수는 6으로 변함이 없으나 shape와 배열의 길이가 달라졌음을 알 수 있다.
<Indexing & Slicing>
X:Y:Z에서 X는 시작 인덱스 Y는 끝 인덱스, Z는 step(슬라이싱 간격)이다.
2차원 배열의 경우 콤마(,)로 행과 열을 구분하여 슬라이싱한다.
<Boolean indexing>
Boolean indexing : 배열의 각 요소를 주어진 조건식에 부합하는지를 판단해 인덱싱하는 것
(구글링해보니 매우 유용하다고 한다 잘 알아두자!)
다음과 같이 print하면 True, False로 구성된 mask array가 반환된다.
또 다음과 같이 조건의 True요소에 해당하는 index만을 조회할 수도 있다.
<Fancy indexing>
Fancy indexing : 연속적이지 않고 ‘비연속적인’ 여러 값을 가져올 수 있다. 즉, 일정한 인덱싱 집합을 리스트 또는 ndarray형태로 지정하여 그 위치에 있는 ndarray를 반환한다.
(한마디로 특정 index의 집합을 추출하고 싶을 때 사용하는 인덱싱 방법)
(아래의 예제가 더 이해가 잘된다.)
총정리 예제)
TIP)
1. 여기서의 배열 arr도 arr[3:6]와 같이 슬라이싱하여 인덱스에 접근이 가능하다.
(index3부터 index5까지 접근)
2. 1부터 15까지 들어있는 (3,5)짜리 배열 만드는 법
3. 2차원 배열에서 인덱싱하는 경우 콤마로 행과 열에 맞게 인덱싱하면 된다.
ex. (2,3) 인덱스의 요소를 인덱싱하는 경우 -> arr[2,3]
4. 2차원 배열에서 원하는 범위의 행과 열을 잘라 출력하고 싶은 경우 행과 열 각각을 슬라이싱 하고 콤마로 구분하면 된다.
ex. 인덱스 (0,1)번째 요소부터 (1,3)번째 요소까지 출력하는 경우 -> arr[0:2.1:4]
5. 배열을 만들 때 다음과 같이 만들 수도 있다.
마지막 파라매터는 step으로 증가수를 의미한다.(-1로하면 역으로 감소하며 생성된다.)
이렇게 하면 [1 2 3 4 5 6 7 8 9 10 11 12]와 같이 배열이 생성된다.
여기서 다음과 같이 하면,
아래와 같이 출력된다.
6. 위의 과정을 reshape()함수를 이용해 코드 한줄로 표현할 수도 있다.
다시 볼만한 실습 코드)
실행 결과 ↓
'인공지능 공부' 카테고리의 다른 글
[2021 NIPA AI 교육 - 기본] 04 데이터 조작 및 분석을 위한 Pandas 심화 (0) | 2021.08.09 |
---|---|
[2021 NIPA AI 교육 - 기본] 03 데이터 조작 및 분석을 위한 Pandas 기본 (1) | 2021.08.06 |
[2021 NIPA AI 교육 - 기본] 01 파이썬의 여러가지 모듈과 패키지 (0) | 2021.08.04 |
2021 과학기술정보통신부 x 정보통신산업진흥원(nipa) 주관 AI 교육 (0) | 2021.08.04 |
머신러닝이란? (머신러닝 개념, 머신러닝 과정) (0) | 2021.01.10 |