code name blue

파이썬 머신러닝/딥러닝 : numpy - 슬라이싱, 인덱싱 본문

Programming/Python

파이썬 머신러닝/딥러닝 : numpy - 슬라이싱, 인덱싱

byebyeblue 2019. 5. 22. 15:05


Numpy 슬라이싱, 인덱싱


▶ Numpy 슬라이싱 : 필요한 요소 자르기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np
list = [
       [123],
       [456],
       [789]
]
 
arr = np.array(list) #numpy 배열로 만들기
 
= arr[0:20:2]
print(a)
#Result
[[1 2]
[4 5]]
 
= arr[1:,1:]
print(b)
#Result
[[5 6]
[8 9]]




▶ Numpy 인덱싱 : 필요한 값 가져오기


(1) 정수 인덱싱(integer indexing)

Numpy 배열 a에 대해서 a[[row1, row2], [col1, col2]]는

a[row1, col1]과 a[row2, col2]라는 두 개의 배열 요소의 집합을 의미한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
list = [
       [1234],
       [5678],
       [9101112]
]
 
= np.array(list) #numpy 배열로 만들기
 
#정수 인덱싱
res = c[[02], [13]] #=>c[0, 1]과 c[2, 3]과 같다
print(res)
 
#Result
2 12]




(2) 부울린 인덱싱(boolean indexing)

각 요소가 선택되었는지, 선택되지 않았는지 표현하는 방식

* boolean = True, False 값


<방법 1>

True, False 값을 직접 작성하여 넣는 방법


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np
list = [
       [123],
       [456],
       [789]
]
 
= np.array(list)
 
#선택여부를 알려주기 위한 배열
x_arr = np.array([
        [False, True, False],
        [True, False, True],
        [False, True, False]
])
 
= d[x_arr]
 
print(n)
 
#Result
[2 4 6 8]




<방법 2>

부울린 인덱싱 배열을 생성할 때 표현식으로 이용하는 방법,

방법 1과 동일한 내용이지만 True, False 값을 직접 일일히 작성하지 않아도 되고 훨씬 간편하다.

* 배열 a에 대하여 짝수인 배열 요소만 True로 지정하겠다고 하면

  x_arr = (a%2 == 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
import numpy as np
list = [
       [123],
       [456],
       [789]
]
 
arr = np.array(list)
 
#배열 arr에 대하여 배열요소가 짝수이면 True, 홀수이면 False
y_arr = (arr%2 == 0)
 
print(y_arr)
 
#Result
[[False  True False]
[ True False  True]
[False  True False]] #방법 1에서 직접 작성하였던 내용과 동일하다
 
#방법 1의 최종값을 얻고 싶을 경우
print(arr[y_arr])
 
#Result
[2 4 6 8]




Comments