Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- DP
- 항해99
- 스프링 핵심 원리 - 기본편
- Spring
- 스프링
- BinarySearch
- 우선순위큐
- 그래프
- 데이터베이스
- 자바
- 그래프 이론
- 알고리즘
- lower bound
- BFS
- 백트래킹
- 코딩테스트준비
- DFS
- 그리디
- 동적 프로그래밍
- 개발자취업
- 백준
- 네트워크 계층
- 99클럽
- 트리
- 브루트포스
- 완전탐색
- 프로그래머스
- Til
- Java
- 정렬
Archives
- Today
- Total
AtraFelis's Develop Diary
[Python] 넘파이(numpy)와 ndarray 본문
넘파이란?
숫자 데이터를 포함한 벡터와 행렬 연산에 유용한 파이썬 라이브러리.
장점
1.속도가 빠르다.
C언어로 구현되어 있으며, 리스트와 달리 넘파이의 배열은 모든 원소가 같은 자료형으로 이루어지기에 속도가 빠르다.
2.문법이 쉽다.
복잡한 연산이나, 연산해야 할 데이터가 증가할 수록 넘파이를 쓰는 것이 좋다.
넘파이 설치와 사용
$ pip install numpy
pip 명령어를 이용해 넘파이 라이브러리를 설치하여 사용하면 된다.
import numpy as np
넘파이 라이브러리는 관용적으로 np라는 이름으로 사용한다.
넘파이의 배열 : ndarray
넘파이의 배열은 ndarray
라고 불린다. 위에서 언급한 것처럼, C언어나 Java의 배열과 동일하다고 생각하면 된다.
ndarray
는 차원 별로 밑의 네 가지로 분류할 수 있다.
- 스칼라(Scalar) : 0차원 배열. 배열의 값을 의미한다.
a = np.array(5)
print(a.shape)
# ()
# 값이 하나이기에 모양이 나오지 않음
- 벡터(Vector) : 1차원 배열. 스칼라 여러 개를 나열한 튜플(Tuple)
a = np.array([1, 2, 3, 4])
print(a.shape)
# a.shape: (5,)
- 행렬(Matrix) : 2차원 배열. 1차원 배열을 여러 개 묶은 배열.
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
# (2, 3)
# (행, 열)
- 텐서(Tensor) : 벡터의 집합. 3차원 이상은 모두 텐서이다.
a = np.array([[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]) # 3차원 텐서
print(a.shape)
# (2, 2, 3)
# (면, 행, 열)
b = np.array([ [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]],
[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]] ]) #4차원 텐서
print(b.shape)
# (2, 2, 2, 3)
배열 생성 함수
함수 | 설명 |
array(p_object, dtype=None) | 리스트를 배열로 변환한다 |
arange([start,] stop[, step,], dtype=None) | 주어진 간격의 수를 배열로 반환한다 (range함수와 유사하다) |
ones(shape, dtype=None) | 주어진 shape 대로, 1로 채운 n차원 배열을 생성한다. |
zeros(shape, dtype=None) | 주어진 shape 대로, 0으로 채운 배열을 생성한다. |
empty | 주어진 shape 대로, 초기화하지 않은 빈 배열을 생성한다. |
eye(N, M=None, k=0, dtype=float) | n * m 크기의 k 번째 열부터 우측 대각선 방향으로 1, 나머지는 0으로 채운 행렬을 생성한다. |
identity(n, dtype=None) | 0번째 요소부터 대각선 방향으로 1, 나머지는 0으로 채운 n * n 2차원 정방 행렬을 생성한다. |
linspace(start, stop, num=50) | start부터 stop까지 일정한 간격으로 num 간격만큼 수를 채운 벡터를 생성한다. |
full(shape, fill_value, dtype=None) | 주어진 shape 대로, 지정한 수로 채운 배열을 생성한다. |