[Numpy] 배열(Array) 함수

Hunie_07·2026년 3월 2일

Numpy

목록 보기
7/8
post-thumbnail

📌 Array 적용가능 함수

📌 1개의 배열에 적용되는 함수

1️⃣ 난수 함수

1) random.randn()

  • random.randn(d0,d1,.., dn) : 표준정규난수 생성
arr = np.random.randn(4, 3)
arr

- 출력

array([[ 2.1112083 ,  0.56573421, -1.1171306 ],
       [ 1.04822026,  0.44196139, -1.15541176],
       [-0.86711409, -0.32242043, -0.04355019],
       [-0.30525955, -1.76728679,  0.84724682]])

2️⃣ 수학 함수

  • 제곱근, 절대값, 삼각함수, 지수로그함수, 반올림함수 등

1) abs()

  • 절대값 출력
np.abs(arr)

- 출력

array([[2.1112083 , 0.56573421, 1.1171306 ],
       [1.04822026, 0.44196139, 1.15541176],
       [0.86711409, 0.32242043, 0.04355019],
       [0.30525955, 1.76728679, 0.84724682]])

2) square()

  • 제곱근 출력
np.square(arr)

- 출력

array([[4.45720050e+00, 3.20055193e-01, 1.24798078e+00],
       [1.09876571e+00, 1.95329874e-01, 1.33497632e+00],
       [7.51886850e-01, 1.03954932e-01, 1.89661948e-03],
       [9.31833926e-02, 3.12330260e+00, 7.17827171e-01]])

3) exp()

  • 지수함수 적용 값 출력
np.exp(arr)

- 출력

array([[8.25821368, 1.76074006, 0.32721737],
       [2.85256976, 1.55575568, 0.31492784],
       [0.42016235, 0.72439357, 0.9573845 ],
       [0.73693208, 0.17079577, 2.33321424]])

4) log()

  • 로그함수 적용 값 출력
    • log(): 자연로그
    • log10() : 상용로그
    • log2() : 밑이 2인 로그
np.log10(np.array([10, 100, 1000]))
np.log2(np.array([16, 32, 1024]))

- 출력

array([1., 2., 3.])
array([ 4.,  5., 10.])

5) sign()

  • 각 성분의 부호 계산
    • 1 : 양수
    • -1 : 음수
    • 0 : 0
np.sign(arr)

- 출력

array([[ 1.,  1., -1.],
       [ 1.,  1., -1.],
       [-1., -1., -1.],
       [-1., -1.,  1.]])

6) floor(), round(), ceil()

  • floor() : 내림
# 내림
np.floor(arr)

- 출력

array([[ 2.,  0., -2.],
       [ 1.,  0., -2.],
       [-1., -1., -1.],
       [-1., -2.,  0.]])
  • round() : 반올림
# 반올림
np.round(arr)

- 출력

array([[ 2.,  1., -1.],
       [ 1.,  0., -1.],
       [-1., -0., -0.],
       [-0., -2.,  1.]])
  • ceil() : 올림
# 올림
np.ceil(arr)
```python
array([[ 3.,  1., -1.],
       [ 2.,  1., -1.],
       [-0., -0., -0.],
       [-0., -1.,  1.]])

3️⃣ NaN 여부 확인

1) isnan()

  • nan 데이터 생성
arr[1, 2] = np.nan
arr

- 출력

array([[ 2.1112083 ,  0.56573421, -1.1171306 ],
       [ 1.04822026,  0.44196139,         nan],
       [-0.86711409, -0.32242043, -0.04355019],
       [-0.30525955, -1.76728679,  0.84724682]])

  • nan 데이터인 성분만 True 로 출력한다.
np.isnan(arr)

- 출력

array([[False, False, False],
       [False, False,  True],
       [False, False, False],
       [False, False, False]])

4️⃣ 무한대 확인

1) .inf

arr + np.inf

- 출력

array([[inf, inf, inf],
       [inf, inf, nan],
       [inf, inf, inf],
       [inf, inf, inf]])

5️⃣ 삼각 함수

  • 각 성분에 대해 삼각함수 값을 계산하기
  • cos, cosh, sin, sinh, tan, tanh
np.sin(arr)

- 출력

array([[ 0.8574968 ,  0.53603577, -0.89884659],
       [ 0.8665363 ,  0.42771322,         nan],
       [-0.76246485, -0.31686319, -0.04353643],
       [-0.30054074, -0.98075778,  0.74946051]])

6️⃣ 사칙연산

1) sum(), nansum()

  • 합을 계산하며, nan 이 포함된 경우 사칙연산 값은 항상 0 이 된다. 이때, nansum() 을 사용하면 nan0 취급한다.
np.sum(arr)

- 출력

np.float64(nan)

np.nansum(arr)

- 출력

np.float64(0.5916093247340019)

2) product(), nanprod()

  • 곱을 계산하며, nan 이 포함된 경우 사칙연산 값은 항상 0 이 된다. 이때, nanprod() 을 사용하면 nan1 취급한다.
np.prod(arr)

- 출력

np.float64(nan)

np.nanprod(arr)

- 출력

np.float64(0.003440008292098186)

3) diff()

  • 각 행의 다음 요소와의 차를 계산한다. arr[i+1] - arr[i]
np.diff(arr)

- 출력

array([[-1.5454741 , -1.68286481],
       [-0.60625886,         nan],
       [ 0.54469367,  0.27887023],
       [-1.46202724,  2.61453361]])

7️⃣ 통계 함수

1) mean(), nanmean()

  • 평균값을 계산하며, nan 이 포함된 경우 통계연산 값은 항상 0 이 된다. 이때, nanmean() 을 사용하면 nan 을 제외한다.
np.mean(arr)

- 출력

np.float64(nan)

np.nanmean(arr)

- 출력

np.float64(0.05378266588490926)

2) std(), nanstd()

  • 표준편차를 계산하며, nan 이 포함된 경우 통계연산 값은 항상 0 이 된다. 이때, nanstd() 을 사용하면 nan 을 제외한다.
np.std(arr)

- 출력

np.float64(nan)

np.nanstd(arr)

- 출력

np.float64(1.0479228497374542)

3) var(), nanvar()

  • 분산을 계산하며, nan 이 포함된 경우 통계연산 값은 항상 0 이 된다. 이때, nanvar() 을 사용하면 nan 을 제외한다.
np.var(arr)

- 출력

np.float64(nan)

np.nanvar(arr)

- 출력

np.float64(1.098142299001867)

4) max(), min(), nanmax(), nanmin()

  • 최대값, 최소값을 반환하며, nan 이 포함된 경우 출력 값은 항상 0 이 된다. 이때, nanmax(), nanmin() 을 사용하면 nan 을 제외하고 반환한다.
np.max(arr)

- 출력

np.float64(nan)

np.nanmax(arr)

- 출력

np.float64(2.1112083026925186)

  • axis= 파라미터를 통해 행, 열 기준으로 최대/최소값을 출력할 수 있다.
    • 2행의 경우 nan 값을 포함하여 nan 출력
np.min(arr, axis=1)

- 출력

array([-1.1171306 ,         nan, -0.86711409, -1.76728679])

5) argmax(), argmin(), nanargmax(), nanargmin()

  • 최대/최소값의 위치 인덱스를 반환한다. nan 이 포함되면 max() min() 값은 nan 이 되기에 nan 의 위치 인덱스를 반환하기에, nan 을 제외하고자 하면 nanargmax() nanargmin() 을 사용한다.
arr = np.array([[ 2.1112083 ,  0.56573421, -1.1171306 ],
                [ 1.04822026,  0.44196139,         nan],
                [-0.86711409, -0.32242043, -0.04355019],
                [-0.30525955, -1.76728679,  0.84724682]])
np.argmax(arr)
np.nanargmax(arr)

- 출력

np.int64(5)
np.int64(0)

2차원 배열

arr2 = np.array([[ 4,  3, -4],
       			 [ 0,  1,  5]])
  • 행 기준으로 행마다 max() 값의 위치 인덱스를 반환한다.
  • 0행의 최대값은 4 이며, 인덱스 0 을 반환하고, 1행의 최대값은 5 이며, 인덱스 2 를 반환하여 array([0, 2]) 을 출력하게 된다.
np.argmax(arr2, axis=1)

- 출력

array([0, 2])

6) cumsum(), cumprod(), nancumsum(), nancumprod()

  • 누적합/곱을 계산하며, nan 이 포함된 경우 통계연산 값은 항상 0 이 된다. 이때, nancumsum() nancumprod() 을 사용하면 nan 을 제외한다.
  • nan 값 이후로 전부 nan 이 되는 모습이다.
np.cumsum(arr)

- 출력

array([2.1112083 , 2.67694251, 1.55981191, 2.60803217, 3.04999356,
              nan,        nan,        nan,        nan,        nan,
              nan,        nan])

2차원 배열

np.cumsum(arr, axis=0)

- 출력

array([[ 2.1112083 ,  0.56573421, -1.1171306 ],
       [ 3.15942856,  1.0076956 ,         nan],
       [ 2.29231447,  0.68527517,         nan],
       [ 1.98705492, -1.08201162,         nan]])

📌 2개의 배열에 적용되는 함수

예시 배열

arr2 = np.array([[ 4,  3, -4],
       			 [ 0,  1,  5]])
arr3 = np.array([[1, 2, 3], 
				 [-5, -10, 4]])                 

1️⃣ 사칙연산

  • 2개의 배열에 대해 동일한 위치의 성분끼리 연산한다.

1) add()

  • 성분의 합 계산
np.add(arr2, arr3)

- 출력

array([[ 5,  5, -1],
       [-5, -9,  9]])

2) subtract()

  • 성분의 차 계산
np.subtract(arr2, arr3)

- 출력

array([[ 3,  1, -7],
       [ 5, 11,  1]])

3) multiply()

  • 성분의 곱 계산
np.multiply(arr2, arr3)

- 출력

array([[  4,   6, -12],
       [  0, -10,  20]])

4) divide()

  • 성분의 나눗셈 계산
np.divide(arr2, arr3)

- 출력

array([[ 4.        ,  1.5       , -1.33333333],
       [-0.        , -0.1       ,  1.25      ]])

2️⃣ maximum(), minimum()

  • 최대/최소값 계산
np.maximum(arr2, arr3)

- 출력

array([[4, 3, 3],
       [0, 1, 5]])

np.minimum(arr2, arr3)

- 출력

array([[  1,   2,  -4],
       [ -5, -10,   4]])

0개의 댓글