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
- laravel
- React
- 블레이드 템플릿
- CentOS
- phpredis
- Redux
- docker
- 기초 수학
- Switch
- webpack
- mariadb
- python
- php
- AWS
- Babel
- rabbitmq
- deep learning
- For
- SQL
- Backbone.js
- NCP
- Machine Learning
- fastapi
- linux
- nginx
- nodejs
- Node
- Redis
- javascript
- Go
Archives
- Today
- Total
개발일기
Python - numpy계산의 기초 본문
728x90
반응형
numpy란?
numpy는 벡터, 행렬 등의 다차원 배열을 계산하며 각종 다양한 수학 계산을 지원하는 파이썬 라이브러리다.
ndarray 배열 생성
파이썬의 리스트와 다르게 numpy에서는 ndarray 객체 배열을 생성한다. ndarray객체 배열을 만드려면 np.array(…)를 사용한다.
import numpy as np # 일반적으로 np로 모듈 이름을 변경하여 사용한다.
python_list = [1, 2, 3] # python list
np_list = np.array([1, 2, 3]) # numpy list
print(type(python_list), type(np_list))
# <class 'list'> <class 'numpy.ndarray'>
ndarray는 기존 파이썬 list와 다르게 배열 안의 데이터들이 같은 데이터 타입을 가진다.
import numpy as np # 일반적으로 np로 모듈 이름을 변경하여 사용한다.
py_list = [1, 2., '딸기'] # python list
np_list = np.array([1, 2., '망고']) # numpy list
print(type(py_list[0]), type(py_list[1]), type(py_list[2]))
# <class 'int'> <class 'float'> <class 'str'>
print(type(np_list[0]), type(np_list[1]), type(np_list[2]))
# <class 'numpy.str_'> <class 'numpy.str_'> <class 'numpy.str_'>
첫번째는 int, 두번째는 float 그리고 세번째는 string형으로 넣고 타입을 출력하면 string형식으로 데이터 타입이 통일된것을 확인할 수 있다. 이와같이 여러개의 데이터 타입이 섞여 있으면 가장 큰 데이터 타입으로 변환된다.
데이터 타입 지정
ndarray를 선언하는 단계에서 dtype으로 데이터 타입을 강제로 지정할 수 있다.
import numpy as np # 일반적으로 np로 모듈 이름을 변경하여 사용한다.
np_list = np.array([1, 2., 3.], dtype='float64') # numpy list
print(type(np_list[0]), type(np_list[1]), type(np_list[2]))
# <class 'numpy.float64'> <class 'numpy.float64'> <class 'numpy.float64'>
arange 메소드
- arange(시작점, 끝점, 간격, 데이터 타입): 시작점과 끝점 사이에서 일정한 간격으로 배열을 생성한다.
- 시작점: 배열이 시작하는 숫자(기본값은 0)
- 끝점: 배열이 종료되는 숫자이며 끝점의 값을 배열에 포함되지 않는다.
- 간격: 시작점과 끝점 사이에 존재하는 값 사이의 간격(기본값은 1)
- 데이터 타입: 데이터 값들의 타입을 지정
import numpy as np
np_list1 = np.arange(0, 5, 1) # array([0, 1, 2, 3, 4])
np_list2 = np.arange(6, 11, 1) # array([ 6, 7, 8, 9, 10]
np_list3 = np.arange(0, 10, 3) # array([0, 3, 6, 9])
np_list4 = np.arange(0, 5, 1, 'float64') # array([0., 1., 2., 3., 4.])
ndarray 속성
- shape: 배열의 형태를 나타낸다. 몇 행렬인지, 또는 몇차원인지 등의 형태를 알 수 있다.
- dtype: 데이터 타입을 확인한다.
- size: 전체 원소의 개수를 반환한다. [1, 2, 3]이면 3을 반환한다.
- reshape(): 배열의 형태를 바꾼다. reshape()를 통해 일렬로 1차원 배열 np_list를 2차원 배열로 변경할 수 있다.
- astype(): 데이터 타입을 변경한다.
import numpy as np
np_list = np.arange(0, 10)
print(np_list.shape) # (10,)
print(np_list.dtype) # int64
print(np_list.size) # 10
np_list2 = np_list.reshape(2,5) # reshape로 변경
print(np_list2) # (2, 5)형식의 배열로 변경
# [[0 1 2 3 4]
# [5 6 7 8 9]]
np_list = np_list.astype('float64') # float64로 데이터 타입 변경
print(np_list.dtype) # float64
행렬곱
dot(), matmul() 메소드로 행렬곱을 계산할 수 있다.
import numpy as np
np_list1 = np.arange(0, 4)
np_list2 = np.arange(5, 9)
np_list1 = np_list1.reshape(2, 2)
np_list2 = np_list2.reshape(2,2)
print(np.matmul(np_list1, np_list2))
print(np.dot(np_list1, np_list2))
# [[ 7 8]
# [31 36]]
# matmul()과 dot()의 곱 결과는 동일하다.
참고 사이트:
https://numpy.org/doc/stable/user/quickstart.html
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python - image file is truncated (2 bytes not processed) (0) | 2024.04.20 |
---|---|
Python - Matplotlib 그래프의 기초 (0) | 2023.12.22 |
Python - Pydantic Model 생성 (2) | 2022.01.25 |
Python - Redis 연결 ( FastAPI ) (0) | 2021.12.07 |
Python - FastAPI DB Connection ( SQLAlchemy ) (0) | 2021.12.03 |
Comments