일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- matplotlib
- PySpark
- Java
- PostgreSQL
- Redshift
- math
- Tkinter
- c#
- numpy
- Github
- array
- SQL
- Apache
- Google Spreadsheet
- django
- PANDAS
- hive
- string
- list
- 파이썬
- gas
- Excel
- Mac
- Python
- Kotlin
- GIT
- google apps script
- dataframe
- Google Excel
- Today
- Total
달나라 노트
Python numpy : split (array 나누기, array split) 본문
numpy의 split method는 array를 나눠서 새로운 array를 생성해주는 역할을 합니다.
바로 예시를 보시죠.
import numpy as np
arr_base = np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
print(arr_base)
arr = np.split(arr_base, 2)
print(arr[0])
print(arr[1])
-- Result
[10 9 8 7 6 5 4 3 2 1]
[10 9 8 7 6]
[5 4 3 2 1]
split method는 위처럼 사용할 수 있습니다.
첫 번쨰 인자로 나눌 array를 전달합니다.
두 번째 인자로 array를 몇 부분으로 나눌지를 전달합니다.
위 예시에서는 arr_base를 두 부분으로 나누라고 되어있습니다.
따라서 총 10개의 요소를 가진 arr_base를 5개의 요소를 가진 2개의 array로 나눴습니다.
split method의 return값은 나눠진 array 정보를 담은 list입니다..
따라서 arr[0], arr[1] 처럼 indexing을 해서 그 결과를 print한것이죠.
보시면 [10 9 8 7 6 5 4 3 2 1]가 정확히 2개로 나뉘어서 [10 9 8 7 6]와 [5 4 3 2 1]가 된 걸 볼 수 있습니다.
import numpy as np
arr_base = np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
print(arr_base)
arr = np.split(arr_base, 5)
print(arr[0])
print(arr[1])
print(arr[2])
print(arr[3])
print(arr[4])
-- Result
[10 9 8 7 6 5 4 3 2 1]
[10 9]
[8 7]
[6 5]
[4 3]
[2 1]
이렇게 5개 부분으로 나눌 수도 있습니다.
다만, split에서 나눌 부분을 정수로 전달할 때에는 나눠진 후의 모든 array가 동일한 개수의 요소를 가지고 있어야 합니다.
즉, 나눠떨어져야 한다는 것이지요.
예를들어 위 예시에서 arr_base는 총 10개의 요소를 가지고 있습니다.
그래서 2개의 array로 나눌때는 5개의 요소를 가진 2개의 array로 나눴고, 5개의 array로 나눌때는 2개의 요소를 가진 5개의 array로 나눴습니다.
만약 위 예시에서 split의 인자로 2나 5가 아닌 3을 전달하면 Error가 뜹니다.
왜냐하면 10개의 요소는 3개로 딱 떨어지게 나눌 수 없기 때문이죠.
import numpy as np
arr_base = np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
print(arr_base)
arr = np.split(arr_base, [2])
print(arr[0])
print(arr[1])
-- Result
[10 9 8 7 6 5 4 3 2 1]
[10 9]
[8 7 6 5 4 3 2 1]
split의 두 번째 사용법은 위와 같습니다.
이전 예시에서는 split의 두 번째 인자를 그냥 정수로 전달했는데 이번에는 list로 전달했습니다.
이 경우 split은 arr_base를 두 부분으로 나누는게 아닌 arr_base에서 가장 앞에있는 2개의 값과 그 나머지 값으로 나눠서 총 2개의 array를 생성하라는 것으로 인식합니다.
그래서 결과를 보시면 arr_base에서 가장 앞에 있는 2개의 값인 10, 9를 가진 array 하나와, 나머지 요소를 가진 array하나가 생성되었습니다.
import numpy as np
arr_base = np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
print(arr_base)
arr = np.split(arr_base, [7])
print(arr[0])
print(arr[1])
-- Result
[10 9 8 7 6 5 4 3 2 1]
[10 9 8 7 6 5 4]
[3 2 1]
두 번째 인자를 [7]로 바꾸면 arr_base에서 가장 앞에 존재하는 7개의 요소를 가진 array와, 나머지 요소를 가진 array를 생성합니다.
import numpy as np
arr_base = np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
print(arr_base)
arr = np.split(arr_base, [2, 5])
print(arr[0])
print(arr[1])
print(arr[2])
-- Result
[10 9 8 7 6 5 4 3 2 1]
[10 9]
[8 7 6]
[5 4 3 2 1]
위 예시처럼 split의 두 번째 인자로 전달되는 list 속에 여러 값을 넣게되면 나눠지는 부분도 많아집니다.
[2, 5]의 의미는 다음과 같습니다.
arr_base에서 index < 2 구간에 있는 값을 가진 array 생성
arr_base에서 2 <= index < 5 구간에 있는 값을 가진 array 생성
arr_base에서 5 <= index 구간에 있는 값을 가진 array 생성
따라서 총 3개의 array가 생성됩니다.