팀원들과 스터디를 진행하다가 axis에 관한 질문이 나와서 다시 한 번 정리해보았다.
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 = 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]])