[Data Handling] Numpy의 axis 복습

팀원들과 스터디를 진행하다가 axis에 관한 질문이 나와서 다시 한 번 정리해보았다.

axis

  • 모든 operation function을 실행할 때, 기준이 되는 dimension 축
  • 새로 생기는 것이 0이 됨

1. axis=0 (index)

  • 행 방향으로 동작 ➡
  • 작업 결과가 행으로 나타남

2. axis=1 (columns)

  • 열 방향으로 동작 ⬇
  • 작업 결과가 열로 나타남
import numpy as np
import pandas as pd
test_array = np.arange(1, 13).reshape(3, 4)
test_array

array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])

df = pd.DataFrame(
    {'name': ['KIM', 'LEE', 'SMITH','BROWN', 'MILLER'],
     'age': [24, 32, 43, 24, np.nan],
     'height': [178, 168, 171, 185, 176],
     'sex': ['M', 'F', 'F', 'M', 'F']})
df
name age height sex
0 KIM 24.0 178 M
1 LEE 32.0 168 F
2 SMITH 43.0 171 F
3 BROWN 24.0 185 M
4 MILLER NaN 176 F


axis 1을 기준으로 요소들의 합

  • 1 + 2 + 3 + 4 = 10
  • 5 + 6 + 7 + 8 = 26
  • 9 + 10 + 11 + 12 = 42
test_array.sum(axis=1)

array([10, 26, 42])


axis 1을 기준으로 drop

df.drop(['age', 'height'], axis=1)
name sex
0 KIM M
1 LEE F
2 SMITH F
3 BROWN M
4 MILLER F


axis 0을 기준으로 요소들의 합

  • 1 + 5 + 9 = 15
  • 2 + 6 + 10 = 18
  • 3 + 7 + 11 = 21
  • 4 + 8 + 12 = 24
test_array.sum(axis=0)

array([15, 18, 21, 24])


axis 0을 기준으로 drop

df.drop([1,2], axis=0)
name age height sex
0 KIM 24.0 178 M
3 BROWN 24.0 185 M
4 MILLER NaN 176 F


third - order tensor

third_order_tensor = np.array([test_array, test_array, test_array])
third_order_tensor

array([[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]],

[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]],

[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]]])

third_order_tensor.sum(axis=2)

array([[10, 26, 42],
[10, 26, 42],
[10, 26, 42]])

third_order_tensor.sum(axis=1)

array([[15, 18, 21, 24],
[15, 18, 21, 24],
[15, 18, 21, 24]])

third_order_tensor.sum(axis=0)

array([[ 3, 6, 9, 12],
[15, 18, 21, 24],
[27, 30, 33, 36]])

좋은 웹페이지 즐겨찾기