본문 바로가기
Python

Numpy 슬라이싱 (slicing)

by 코딩하는 미토콘드리아 bioinformatics 2022. 1. 5.
반응형

슬라이싱은
연속된 인덱스상의 ndarray를 추출하는 방식이다.
' : ' (colon) 기호를 사이에
시작 인덱스와 종료 인덱스를 표시하면
시작 인덱스에서 종료 인덱스 -1 위치에 있는 데이터 ndarray 가 추출된다.
예를 들어,
1 : 5 라고 하면 시작 인덱스 1과 종료 인덱스 4까지에 해당하는 ndarray를 뜻한다.

#import numpy as np array1 = np.arange(start = 1, stop = 10) array2 = array1[0:3] print(array2) print(type(array2))

[output]

[1 2 3] <class 'numpy.ndarray'>

아래와 같이 표현도 가능하다.

array1 = np.arange(start = 1, stop = 10) array3 = array1[0 : 3] print(array3) array4 = array1[ : 3] print(array4) array5 = array1[3 : ] print(array5) array6 = array1[ : ] print(array6)

[output]

[1 2 3] [1 2 3] [4 5 6 7 8 9] [1 2 3 4 5 6 7 8 9]

1. array[0 : 3] ->   인덱스 위치 0에서 인덱스 위치 3까지의 배열을 가지고 온다.
2. array[ : 3] -> 인덱스 위치 0에서 인덱스 위치 3까지의 배열을 가지고 온다.
3. array[3 : ] -> 인덱스 위치 3에서 인덱스 위치 끝 (-1) 까지의 배열을 가지고 온다.
4. array[ : ] -> 인덱스 맨처음/맨마지막 인덱스 위치 까지의 배열을 가지고 온다.

-------------------------------------------------------------array[ : ]----------------------------------------------------------->
--------------array[ : 3 ]---------------> --------------------------------------array[ 3 : ]---------------------------------->
-------------array[ 0 : 3 ]------------->
index=0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9

array


2차원 ndarray에서 슬라이싱을 적용해보겠다.
2차원 슬라이싱에 다른점은
' , ' (comma) 로 로우와 컬럼 인덱싱을 지칭해준다.

array1d = np.arange(start =1, stop = 10) array2d = array1d.reshape(3,3) print('array2d:\n', array2d) print('array2d[0:2, 0:2] \n', array2d[0:2, 0:2]) print('array2d[1:3, 0:3] \n', array2d[1:3, 0:3]) print('array2d[1:3, :] \n', array2d[1:3, :]) print('array2d[:, :] \n', array2d[: , :]) print('array2d[:2, 1:] \n', array2d[:2, 1:]) print('array2d[:2, 0] \n', array2d[:2, 0])

[output]

array2d: [[1 2 3] [4 5 6] [7 8 9]] array2d[0:2, 0:2] [[1 2] [4 5]] array2d[1:3, 0:3] [[4 5 6] [7 8 9]] array2d[1:3, :] [[4 5 6] [7 8 9]] array2d[:, :] [[1 2 3] [4 5 6] [7 8 9]] array2d[:2, 1:] [[2 3] [5 6]] array2d[:2, 0] [1 4]

https://www.oreilly.com/library/view/python-for-data/9781449323592/ch04.html

참고할 점은,
2차원 ndarray에서 뒤에 오는 인덱스를 없애면 1차원 ndarray를 (axis =0) 을 반환한다.
array2d[ 0 ] 과 같이 2차원에서 뒤에 오는 인덱스를 없애면 로우축 (axis =0) 의 첫번째 로우 ndarray를 반환한다.

Reference
1. https://www.oreilly.com/library/view/python-for-data/9781449323592/ch04.html

 

Python for Data Analysis

Chapter 4. NumPy Basics: Arrays and Vectorized Computation NumPy, short for Numerical Python, is the fundamental package required for high performance scientific computing and data analysis. It is the foundation … - Selection from Python for Data Analy

www.oreilly.com

2. 파이썬 머신러닝 완벽가이드 위키북스 데이터 사이언스 시리즈

반응형

'Python' 카테고리의 다른 글

Numpy.sort, argsort  (0) 2022.01.09
Numpy Fancy Indexing, Boolean Indexing  (0) 2022.01.06
python 으로 csv 파일 합치기  (0) 2022.01.04
Numpy 인덱싱 (indexing)  (0) 2022.01.03
Numpy.reshape ( -1 )  (0) 2022.01.02