- 전체
- Python 일반
- Python 수학
- Python 그래픽
- Python 자료구조
- Python 인공지능
- Python 인터넷
- Python SAGE
- wxPython
- TkInter
- iPython
- wxPython
- pyQT
- Jython
- django
- flask
- blender python scripting
- python for minecraft
- Python 데이터 분석
- Python RPA
- cython
- PyCharm
- pySide
- kivy (python)
Python 수학 [python 수학] Numpy 많이쓰는 함수 정리
2023.11.28 18:44
[python 수학] Numpy 많이쓰는 함수 정리
Numpy 란
다들 아시다시피 파이썬에서 행렬관련 계산을 빠르게 해주는 패키지죠
모르던 시절에 넘피라고 읽었었는데 넘파이였… 아직도 습관적으로 튀어나오는
항상 쓰던 패키지지만 정리겸 복습겸 한번 남겨봐요
Numpy는 ndarray 라는 넘파이 전용 리스트를 사용하는데 쉽게 행렬이라 생각하시면 됩니다. Tensorflow 나 pytorch, keras 등의 프레임웍도 전부 이 ndarray를 사용하니 익혀두면 매우 유용합니다.
한가지 타입의 정보만 저장이 가능하지만 연산속도에서 엄청난 이점이!
반복문을 행렬로 변화시키는걸 Vectorization 기법이라 하죠.
ndarray의 앞의 nd 는 n 차원을 의미… 그냥 그렇다구요
편한 점이라면 파이썬 리스트에서 사용하던 : 를 이용한 슬라이싱도 가능하고 브로드캐스팅이란 기능덕에 차원이 맞지 않는 행렬끼리도 연산이 가능해요. 물론 아얘 이상한거끼린 안되고 (3,5) 과 (2,3,5) 이런 행렬은 앞에행렬을 2번 반복해서 (2,3,5)로 만들어 연산해 줍니다. 좋은 기능이긴 하나 의도하지 않은 계산이 될수도 있으니 주의를…
일단 불러옵시다
> import numpy as np
그럼 시작해볼게요
생성 함수
- np.array()
입력받은 파이썬 리스트를 ndarray 형태로 바꿔줍니다
> li = [1,2,3,4,5,6]
> arr = np.array(li) # ndarray로 변환
> display(arr)
array([1, 2, 3, 4, 5, 6])
- np.arange()
파이썬 range 함수와 같지만 ndarray 객체를 생성하죠
> np.arange(1,7)
array([1, 2, 3, 4, 5, 6])
- np.zeros(), np.full(), np.eye()
기본 행렬 생성 함수들
행렬 생성시 매우 자주 사용 한다
> np.zeros((2,3))
array([[0., 0.],
[0., 0.],
[0., 0.]])
> np.full((2,3), 55) # 자매품 0대신 다른값 넣는 함수
array([[55, 55, 55],
[55, 55, 55]])
> np.eye(2) # 단위행렬(주대각성분이 1이고 나머진 0) 생성 함수
array([[1., 0.],
0., 1.])
연산 함수
연산에 사용하는 함수들이죠. 대부분 함수들은 전체단위로 계산을하며 행별 혹은 열별로 사용하고 싶을때는 axis 변수를 이용해 주면 됩니다
-
np.add(), np.substract(), np.mulyiply(), np.divide()
사칙연산입니다. 각 해당하는 위치의 원소끼리 연산하죠. -
np.dot()
내적을 연산하는 것이라지만, 그냥 행렬곱이라 생각하는게편합니다.
연산을 위해선 형상을 맞추는게 중요! -
np.sum(), np.prod()
원소의 합, 혹은 곱을 반환합니다 -
np.max(), np.min()
최대와 최소값 반환하는 함수입니다 -
np.argmax(), np.argmin()
최대와 최소값을 가진 위치를 반환하는 함수에요
np.argmax(data) 가 2라면 2번째 위치에 최대값이 존재한단 뜻이죠.
형상 관련 함수
- ndarray.shape
ndarray의 차원을 반환
함수가 아니니 ()를 안써도됩니다 자료를 볼때 항상 가장 먼저 쓰게되는 함수로 딥러닝떄 형상맞추기 노가다를 하다보면 자연스레 손에 익게됨
> data = np.arange(1,7)
> data.shape
(6,)
- np.reshape()
행렬의 차원 바꾸는데 사용, -1을 넣어 쭉 피는용도로도 자주 사용
여러 차원을 넣을땐 꼭 ()로 묶어줘야합니다
> data = np.arange(1,7)
> data.reshape((2,3)) # 2,3 행렬로 변경
> # np.reshape(data, (2,3)) 이렇게도 가능
array([[1, 2, 3],
[4, 5, 6]])
> data.reshape(-1) # 쭉 필때
array([1, 2, 3, 4, 5, 6])
> data.reshape((3,-1)) # 3행으로(열은 알아서)
array([[1, 2],
[3, 4],
[5, 6]])
- np.transpose()
기본적으로는 행렬의 전치행렬을 구하는 것인데 조금 다른기능이라면 3차원 이상의 행렬에서 우선순위를 정해줄 수 있다
> data = np.arange(1,7)
> data = data.reshape((2,3,1))
> print(data.shape)
> data = data.transpose((0,2,1)) # 두번째와 세번째의 순서 변경
> print(data.shape)
(2, 3, 1)
(2, 1, 3)
난수 발생 함수들
- np.random.seed()
기본 시드지정함수로 랜덤이 들어간 함수에서 항상 같은 결과를 표출하기 위해 사용한다 모델끼리의 성능비교같은 것을 할때는 고정하는것이 유리 숫자는 아무거나 넣어도 되지만 항상같은것을 넣도록 하는게 좋음
np.random.seed(42)
np.random.randn()
표준 정규분포에 따른 n 개의 무작위 숫자 생성
> np.random.randn(5) # 5개의 숫자 생성
array([ 0.69406812, -1.15425813, 0.98864607, 0.73682549, -0.57181785])
- np.random.randint()
랜덤한 정수를 생성해줍니다. min 과 sup 지정도 가능하죠
> np.random.randint(0, 10, 5) # 0 이상 10 미만의 숫자 5개 랜덤 생성
array([7, 0, 7, 7, 2])
마치며
여러가지 더있지만 일단 자주 쓰던것으로 뽑아봤습니다 당연히 넘파이엔 엄청나게 많은기능이 있지만 실제로 사용하는 것은 조금 적은편… Tensorflow 나 pytorch 의 함수를 사용하게 되므로 ㅠㅠ 중요한게 생각나면 또 업데이트 할께요 저도 까먹으면 가끔씩 보려고 정리한거라 ㅠ
[출처] https://aruie.github.io/2019/06/19/numpy.html
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 2 | (Python) Jupyter Notebook 내에서만 환경 변수 설정 방법 | 졸리운_곰 | 2023.07.06 | 646 |
| 1 |
주피터 노트북(Jupyter Notebook) 시작 폴더 변경
| 졸리운_곰 | 2020.05.09 | 2512 |

