데이터분석/Numpy

차원 축소 연산 정리 - Numpy

소혜아빠 2021. 7. 17. 20:44

행렬의 하나의 행에 있는 원소들을 하나의 데이터 집합으로 보고 그 집합의 평균을 구하면 각 행에 대해 하나의 숫자가 나오게 된다. 예를 들어 10x5 크기의 2차원 배열에 대해 행-평균을 구하면 10개의 숫자를 가진 1차원 벡터가 나오게 된다. 이러한 연산을 차원 축소(dimension reduction) 연산이라고 한다.

 

넘파이는 다음과 같은 차원 축소 연산 명령 혹은 메서드를 지원한다.

  • 최대/최소: min, max, argmin, argmax
  • 통계: sum, mean, median, std, var
  • 불리언: all, any

import numpy as np
a = np.array([[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]])

최대/최소

np.min(배열, axis)

배열의 데이터 중에 최댓값을 반환

# 행렬의 최소값
np.min(a)
1

연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.

  • axis=0인 경우는 열 연산, 
  • axis=1인 경우는 행 연산.
  • 디폴트 값은 axis=0 입니다.
  • 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 열의 최솟값
np.min(a, axis=0)
array([1, 2, 3, 4, 5, 6])

 

np.max(배열, axis)

배열의 데이터 중에 최댓값을 반환

# 행렬의 최대값
np.max(a)
30

연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.

  • axis=0인 경우는 열 연산, 
  • axis=1인 경우는 행 연산.
  • 디폴트 값은 axis=0 입니다.
  • 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 행의 최대값
np.max(a, axis=1)
array([ 6, 12, 18, 24, 30])

 

np.argmin(배열, axis)

배열의 데이터 중에 최솟값의 위치를 반환

# 최솟값의 위치
np.argmin(a)
0

연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.

  • axis=0인 경우는 열 연산, 
  • axis=1인 경우는 행 연산.
  • 디폴트 값은 axis=0 입니다.
  • 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 행의 최솟값의 위치
np.argmin(a, axis=1)
array([0, 0, 0, 0, 0], dtype=int64)

 

np.argmax(배열, axis)

배열의 데이터 중에 최댓값의 위치를 반환

# 최댓값의 위치
np.argmax(a)

연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.

  • axis=0인 경우는 열 연산, 
  • axis=1인 경우는 행 연산.
  • 디폴트 값은 axis=0 입니다.
  • 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 열의 최댓값의 위치
np.argmax(a, axis=0)
array([4, 4, 4, 4, 4, 4], dtype=int64)

통계

np.sum(배열, axis)

배열의 데이터들의 합을 반환

# 배열의 총 합
np.sum(a)
465

연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.

  • axis=0인 경우는 열 연산, 
  • axis=1인 경우는 행 연산.
  • 디폴트 값은 axis=0 입니다.
  • 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 열의 총합
np.sum(a, axis=0)
array([65, 70, 75, 80, 85, 90])
# 각 행의 총합
np.sum(a, axis=1)
array([ 21,  57,  93, 129, 165])

 

np.mean(배열, axis)

배열의 데이터들의 평균을 반환

# 배열의 총 평균
a.mean()
15.5

연산의 대상이 2차원 이상인 경우에는 어느 차원으로 계산을 할 지를 axis 인수를 사용하여 지시할 수 있습니다.

  • axis=0인 경우는 열 연산, 
  • axis=1인 경우는 행 연산.
  • 디폴트 값은 axis=0 입니다.
  • 마지막으로, axis 인수는 대부분의 차원 축소 명령에 적용할 수 있습니다.
# 각 열의 평균
np.mean(a, axis=0)
array([13., 14., 15., 16., 17., 18.])
# 각 행의 평균
np.mean(a, axis=1)
array([ 3.5,  9.5, 15.5, 21.5, 27.5])

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]

불리언

np.all(조건)

배열의 모든 데이터가 조건과 맞으면 True / 하나라도 다르면 False를 반환

# 배열 arr 안의 데이터 전체가 5보다 큰가?
np.all(arr > 5)
False
# arr 배열 내의 데이터 전체가 10보다 작은가?
np.all(arr < 10)
True

 

np.any(조건)

배열의 데이터 중 조건과 맞는 데이터가 하나라도 있으면 True / 전혀 없으면 False를 반환

 

# 배열 arr 내의 데이터 중 5보다 큰 데이터가 하나라도 있는가?
np.any(arr > 5)
True
# 배열 arr 내의 데이터 중 0보다 작은 값이 있는가?
np.any(arr < 0)
False