데이터사이언스 기록기📚

[Numpy] axis를 이용하여 연산하기 본문

Data/Data

[Numpy] axis를 이용하여 연산하기

syunze 2022. 6. 16. 17:33

1. 1차원 데이터에 적용하기

 - axis : 해당 axis를 따라서 연산 적용

 - 1차원은 axis = 0만 적용. 

x = np.arange(15)
print(x)
# [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
# 축을 따라서 연산
np.sum(x, axis = 0)		# 105
# 1차원이어서 axis = 0까지만 가능
np.sum(x, axis = 1)		# Error!

 

2. 2차원 데이터에 적용하기

y = x.reshape(3,5)
print(y)

# [[ 0  1  2  3  4]
# [ 5  6  7  8  9]
# [10 11 12 13 14]]
# 행 axis = 0, 열 axis = 1
print(np.sum(y, axis = 0))  # [15 18 21 24 27]

print(np.sum(y, axis = 1))  # [10 35 60]

 

3. 3차원 텐서에 적용하기

 - 파이썬 인덱스처럼 - (마이너스) 인덱스 사용 가능

z = np.arange(36).reshape(3,4,3)
print(z)
# [[[ 0  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 32]
#  [33 34 35]]]
# 첫번째가 0이 되므로 4.3만 남음(연산 : 0 + 12 + 24)
np.sum(z, axis = 0) 
# array([[36, 39, 42],
#       [45, 48, 51],
#      [54, 57, 60],
#       [63, 66, 69]])

# (3,3)행렬
np.sum(z, axis = 1) 
# array([[ 18,  22,  26],
#       [ 66,  70,  74],
#       [114, 118, 122]])

# (3.4)행렬
np.sum(z, axis = 2) 
# array([[  3,  12,  21,  30],
#       [ 39,  48,  57,  66],
#       [ 75,  84,  93, 102]])

 

4. axis값이 튜플인 경우

 - 해당 튜플에 명시된 axis에 대해서 연산

print(z)
# [[[ 0  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 32]
#  [33 34 35]]]
# 0,1번째 축을 기준으로 줄임
np.sum(z, axis = (0,1))		# array([198, 210, 222])

 

728x90
Comments