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
- C#
- OpenCV
- ubuntu
- YOLO
- Selenium
- Docker
- VS Code
- 기타 연주
- 핑거스타일
- windows forms
- Python
- label
- Linux
- pip
- mysql
- 프로그래머스
- Numpy
- 컨테이너
- 오류
- pytorch
- paramiko
- C++
- 채보
- C
- Visual Studio
- LIST
- error
- JSON
- SSH
- pandas
Archives
- Today
- Total
기계는 거짓말하지 않는다
Python NumPy(Numerical Python) 본문
NumPy
행렬이나 대규모 다차원 배열을 쉽게 처리할 수 있는 자료구조 기능 지원,
다양한 수치해석, 통계분석 기능을 제공하는 파이썬 라이브러리.
NumPy 패키지의 대부분 함수는 C나 Fortran으로 구현되어 우수한 성능 제공
Pandas, Matplotlib 등과 함께 사용 되는것이 일반적임
Install
command 창에서 pip install numpy 입력 (pip 패키지 관리자가 있어야 함)
python 버전 확인은 커맨드 창에 python --version 또는 py --version 입력.
NumPy를 사용하기 위해 import numpy를 사용
관행적으로 np 라는 별칭을 사용하여 import numpy as np로 사용한다.
NumPy 배열 클래스 ndarray
ndarray 생성
메서드 | 설명 |
np.array([]) | 리스트를 이용한 ndarray 생성 |
np.arange(N) np.arange(start, stop, step) |
range() 함수와 유사 0..N-1의 1차원 배열 생성 start~stop-1 까지 step 간격으로 생성 |
np.zeros(shape, dtype=float, order=’C’) | shape은 (N, M) 튜플 형식. N x M 배열의 크기를 지정 배열의 원소가 모두 0.0인 배열을 생성 dtype은 배열원소의 자료형 지정 order=’C’이면 C-program style로 행(row) 우선순서로 원소 생성 order=’F’ 이면 Fortran-program style로 열(column) 우선순서로 원소 생성 |
np.ones(shape, dtype=float, order=’C’) | 배열의 원소가 모두 1.0인 배열을 생성 나머지 위와 동일 |
np.empty(shape, dtype=float, order=’C’) | 초기화 되지 않은 ndarray 배열 객체를 생성 |
np.full(shape, fill_value, dtype=None, order=’C’) | fill_value로 초기화된 ndarray 배열 객체를 생성 |
np.identity(N, dtype='') (dtype='int64', 'float32' 등) |
N x N 크기의 dtype 자료형 원소로 구성된 행렬에서 대각선 원소만 1.0이며, 나머지 원소들은 모두 0.0인 단위 행렬 (identity matrix) 생성 |
np.linspace(start, stop, num, endpoint, retstep, dtype) | 배열의 원소 개수(num)만큼 start~stop 까지의 각 값의 편차로 배열 생성. 기본 num은 50 endpoint은 stop 값 포함 여부 dtype은 자료형 |
np.logspace(start, stop, num, endpoint, base, dtype) | 위와 같으나 log 값으로 배열을 만듦 기본 num은 50, base는 10 |
import numpy as np
# ndarray 생성
arr = np.array([1, 2, 3, 4])
print(arr, '\n')
# 0으로 초기화
arr = np.zeros((3, 3))
print(arr, '\n')
# 1로 초기화
arr = np.ones((2, 2))
print(arr, '\n')
# 빈 값으로 초기화. 쓰레기 값
arr = np.empty((4, 4))
print(arr, '\n')
# 0 ~ 9까지 배열 생성
arr = np.arange(10)
print(arr, '\n')
# -5 ~ 4 까지 1씩 증가하면서 생성
arr = np.arange(-5, 5, 1)
print(arr, '\n')
arr = np.linspace(0, 10, 5)
print(arr, '\n')
# log base의 x는 1 ~ 5
arr = np.logspace(1, 5, num=5, base=2)
print(arr, '\n')
ndarray 클래스 메서드
메서드 | 설명 |
arr.ndim | 배열의 dimension 확인 배열의 차원은 axes 또는 rank라고도 함 arr = np.array([[1, 2, 3], [4, 5, 6]]) arr.ndim # 2 |
arr.shape | 배열의 각 차원의 크기를 튜플로 반환 arr = np.array([[1, 2, 3], [4, 5, 6]]) arr.shape # (2, 3) |
arr.reshape | 배열의 차원 변경 하나를 -1로 두면 자동 계산하여 변경 # 2행 5열로 변경 arr = np.arange(10).reshape(2, 5) # 행 자동 계산 arr = np.arange(10).reshape(-1, 5) |
arr.size | 배열의 전체 원소 개수 arr = np.array([[1, 2, 3], [4, 5, 6]]) arr.size # 6 |
arr.dtype | 배열 원소의 자료형 (ex: numpy.int32, numpy.int16, numpy.float64) arr = np.array([[1, 2, 3], [4, 5, 6]]) arr.dtype # dtype('int64') |
arr.itemsize | 배열 원소 자료형의 크기(바이트 수) |
arr.data | 배열의 버퍼 arr.data # <memory at 0x00~~> |
arr.astype(np.데이터타입) | 배열의 타입 변환 # 64비트 실수로 변환 arr_float = arr_int.astype(np.float64) |
# 문자형 데이터 배열을 정수형 데이터 배열로 변환
arr_str = np.array(['1', '2', '3'])
arr_int = arr_str.astype(np.int64)
print(arr_int.dtype) # dtype('int64')
NumPy에서 사용 가능한 자료형
자료형 | typestr | 설명 |
int8 uint8 | i1 u1 | 1바이트(8비트) 부호있는 정수 1바이트(8비트) 부호없는 정수 |
int16 uint16 | i2 u2 | 2바이트(16비트) 부호있는 정수 2바이트(16비트) 부호없는 정수 |
int32 uint32 | i4 u4 | 4바이트(32비트) 부호있는 정수 4바이트(32비트) 부호없는 정수 |
int64 uint64 | i8 u8 | 8바이트 (64비트) 부호있는 정수 8바이트 (64비트) 부호없는 정수 |
float16 | f2 | 2바이트(16비트) 실수(float) |
float32 | f4, f | 4바이트(32비트) 실수(float) |
float64 | f8, d | 8바이트(64비트) 실수(float) |
float128 | f16, g | 16바이트(128비트) 실수(float) |
complex64 | c8 | 실수부와 허수부 각각 4bytes(32-bit)로 구성된 복소수 |
complex128 | c16 | 실수부와 허수부 각각 8bytes(64-bit)로 구성된 복소수 |
complex256 | c32 | 실수부와 허수부 각각 16bytes(128-bit)로 구성된 복소수 |
bool | ? | bool 데이터(True 또는 False) |
object | O | 파이썬 객체(object) |
string_ bytes_ |
S | 문자열(string) |
unicode_ str_ |
U | 유니코드 문자열(unicode string) |
void | V | 여러 데이터 타입을 포함하고 있는 raw data |
ndarray 연산
연산 | 문법 | 설명 |
산술 | arr + n | 행렬 arr의 각 원소에 n을 더함 |
arr - n | 행렬 arr의 각 원소에 n을 뺌 | |
arr * n | 행렬 arr의 각 원소에 n을 곱함 | |
arr / n | 행렬 arr의 각 원소에 n을 나눔 (실수 나눗셈) |
|
arr // n | 행렬 arr의 각 원소에 n을 나눔 (정수 나눗셈 |
|
arr % n | 행렬 arr의 각 원소에 n으로 나머지 연산 | |
arr ** n | 행렬 arr의 각 원소에 n 제곱 | |
abs(arr + n) | 행렬 arr의 각 원소 연산 후 절대값 계산 | |
관계 | arr < n | 행렬 arr의 각 원소가 n 보다 작은지 각 원소의 bool 리스트 반환 |
arr <= n | 행렬 arr의 각 원소가 n 보다 작거나 같은지 각 원소의 bool 리스트 반환 |
|
arr > n | 행렬 arr의 각 원소가 n 보다 큰지 각 원소의 bool 리스트 반환 |
|
arr >= n | 행렬 arr의 모든 원소가 n 보다 크거나 같은지 각 원소의 bool 리스트 반환 | |
논리 | arr.any() | 행렬 arr의 원소 중 하나라도 True 이면 결과는 True, 모든 원소가 False 이면 결과는 False |
arr.all() | 행렬 arr의 원소 중 모두 True 이면 결과는 True, 하나라도 False 이면 결과는 False |
ndarray 배열 끼리의 연산도 가능
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
# 각 행렬 원소의 덧셈
print(arr1 + arr2)
print(np.add(arr1, arr2), '\n')
# 각 행렬 원소의 곱셈
print(arr1 * arr2)
print(np.multiply(arr1, arr2), '\n')
# 행렬의 곱은 dot으로 표현
print(arr1.dot(arr2)) # 행렬의 곱
'Python' 카테고리의 다른 글
Python Direct kernel connection broken 에러 (0) | 2021.06.30 |
---|---|
Python NumPy 슬라이스, 통계 (0) | 2021.06.28 |
Python 반복문 (0) | 2021.06.26 |
Python 조건문, 관계, 논리, 비트 연산자 (0) | 2021.06.25 |
Python 변수, 데이터 타입, 입출력 (0) | 2021.06.24 |
Comments