달나라 노트

Python numpy : split (array 나누기, array split) 본문

Python/Python numpy

Python numpy : split (array 나누기, array split)

CosmosProject 2022. 1. 23. 02:28
728x90
반응형

 

 

 

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가 생성됩니다.

 

 

 

 

 

 

728x90
반응형
Comments