numpy documentation
- numpy 공식 문서 링크
- numpy에서 제공되는 함수등에 대한 문서
- [NumPy Reference — NumPy v1.25.dev0 Manual
numpy.org](https://www.numpy.org/devdocs/reference/)
numpy ndarray의 연산 함수, 통계 함수, 집계 함수 등 다양한 기본 함수에 대해서 공부해보자. 더 자세한 내용은 위 사이트에서 검색해보면 파라미터 등 다양한 정보를 구할 수 있다.
1. numpy 연산 함수 (add, substract, multiply, divide)
# <in>
x = np.arange(15).reshape(3, 5)
y = np.random.rand(15).reshape(3, 5)
print(x)
print(y)
# <out>
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
[[0.16911084 0.08833981 0.68535982 0.95339335 0.00394827]
[0.51219226 0.81262096 0.61252607 0.72175532 0.29187607]
[0.91777412 0.71457578 0.54254437 0.14217005 0.37334076]]
3X5 2차원 배열x, y를 만들었다. 2차원 ndarray x, y에 연산 함수를 사용해보자.
np.add(x, y)
np.divide(x, y)
x + y
x - y
x * y
x / y
결과값은 역시 3X5 2차원 배열로 만약 두 ndarray의 shape이 같지 않으면 error가 발생한다.
2. numpy 통계 함수( 평균, 분산, 중앙값, 최댓값,최솟값 등...)
# <in>
np.random.seed(28)
y = np.random.rand(3,5)
print(y)
# <out>
[[0.72901374 0.5612396 0.12496709 0.39759237 0.78130821]
[0.51099298 0.18269336 0.85351288 0.95537189 0.98421347]
[0.19270097 0.9707951 0.23480835 0.02635385 0.94606034]]
random.seed()
함수를 사용하여 고정 랜덤값을 지정했다.
1. np.mean()
# <in>
np.mean(y)
y.mean()
# <out>
0.3797892855201101 # y의 평균값
2. np.max()
# <in>
np.max(y)
y.max(y)
# <out>
0.9842134682517789 # y의 최댓값
3. np.argmax()
# <in>
np.argmax(y)
y.argmax()
# <out>
2 # y의 최대값의 위치(인덱스)
4. np.var()
, np.median
, np.std()
# <in>
np.var(y), np.median(y), np.std(y)
# <out>
(0.11356107335915779, 0.5612396023276411, 0.3369882392000614) # y의 분산, 중앙값, 편차
3. numpy 집계 함수 (합계: sum, 누적합계: cumsum, any, all) 등등
# <in>
np.random.seed(28)
y = np.random.rand(3,5)
print(y)
# <out>
[[0.72901374 0.5612396 0.12496709 0.39759237 0.78130821]
[0.51099298 0.18269336 0.85351288 0.95537189 0.98421347]
[0.19270097 0.9707951 0.23480835 0.02635385 0.94606034]]
1. np.sum()
합계
# <in>
np.sum(y)
# <out>
8.451624209209827
2. np.cumsum()
누적합계
# <in>
np.cumsum(y) # 누적 합산
# <out>
array([0.72901374, 1.29025334, 1.41522044, 1.81281281, 2.59412101,
3.10511399, 3.28780735, 4.14132023, 5.09669212, 6.08090559,
6.27360656, 7.24440166, 7.47921002, 7.50556387, 8.45162421])
누적합계(cumsum)는 인덱스가 올라갈수록 누적된 합계를 반환해준다.
3. any
, all
함수
- any : 특정 조건을 만족하는 것이 하나라도 있으면 True, 아니면 False를 return한다.
- all : 모든 원소가 특정 조건을 만족한다면 True, 아니면 False를 return한다.
# <in>
np.random.seed(28)
z = np.random.randn(10) # 정규분포에서 추출한 원소 10개를 가지는 1차원 벡터
print(z)
# <out>
[ 0.44633238 1.66912005 -0.26427996 -0.96783493 0.05918843 1.51461999
0.33687044 -0.3023687 -0.8386418 -0.51773125]
# <in>
np.random.seed(28)
z = np.random.randn(10)
z > 0
# <out>
array([ True, True, False, False, True, True, True, False, False,
False])
z의 인덱스 중 0보다 크면 True
작거나 같으면 False
를 반환한다.
# <in>
np.random.seed(28)
z = np.random.randn(10)
np.any(z > 0)
# <out>
True
z 의 원소 중 어느 하나라도 0보다 크면 True
를 반환한다.
# <in>
np.random.seed(28)
z = np.random.randn(10)
np.all(z != 0) # 모든 원소가 0이 아니면 True
no.all(z == 0) # 모든 원소가 0이면 True
# <out>
True
False
4. where 함수
- 조건에 따라 선별적으로 값을 선택 가능하다.
- 사용의 예) 음수인 경우는 0, 나머지는 그대로 값을 쓰길 원할 때
# <in>
np.random.seed(28)
z = np.random.randn(10) # 정규분포에서 추출한 원소 10개짜리 1차원 벡터
np.where(z > 0, z, int(0)) # 원소의 값 중 0보다 큰 것은 z 그대로 작거나 같은 것은 0으로 대치하여 반환
# <out>
array([0.44633238, 1.66912005, 0. , 0. , 0.05918843,
1.51461999, 0.33687044, 0. , 0. , 0. ])
'python > numpy' 카테고리의 다른 글
7. broadcasting (0) | 2023.02.16 |
---|---|
6. axis의 이해 - axis를 파라미터로 갖는 함수 - (0) | 2023.02.16 |
4. ndarray -데이터 형태 바꾸기(reshape,flatten)- (0) | 2023.02.15 |
3. ndarray - 인덱싱_슬라이싱 (0) | 2023.02.15 |
2. numpy - random 서브모듈 함수 - (0) | 2023.02.15 |