반응형
두 번째로는 인덱싱과 슬라이싱에 관한 것이다.
사실 파이썬에서도 리스트의 인덱싱, 슬라이싱 공부를 한 적이 있다.
하지만 넘파이는 다차원의 배열을 포함하니 복잡한 부분이 생기기 시작했다.
차원을 생각하여 인덱싱과 슬라이싱을 하는 것을 유념해야 된다.
-----------
02. 인덱싱과 슬라이싱 (Indexing & Slicing)
1) 배열 인덱싱 Arrays Indexing
배열 요소에 접근하는 것과 같다.
# 1차원 배열
import numpy as np
a = np.array([1,2,3,4,5])
print(a[0]) # 첫 번째 요소에 접근(이 위치의 값을 가져오기)
>> 1
print(a[2]+a[3]). # 두 번째 요소와 세 번째 요소 더하기
>> 7
- 2차원의 경우 인덱싱 시 [행,열] 을 뜻한다.
# 2차원 배열
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a[0,1]) # 0행의 1열 요소에 접근하는 것
>> 2
- 3차원의 경우 인덱싱은 첫 번째 배열 요소의 두 번째 배열 요소의 세 번째 배열 요소를 접근하는 것
# 3차원 배열
a = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(a)
>> [[[1,2,3]
[4,5,6]]
[[7,8,9]
[10,11,12]]]
print(a[0,1,2])
>> 6
* 첫 번째 배열 0과 1 중 0, 두 번째 배열 0과 1 중 1, 세 번째 배열 0, 1, 2 중 2
첫 번째 배열 0 = [[1,2,3],[4,5,6]] / 1 = [[7,8,9],[10,11,12]]
두 번째 배열 0 = [1,2,3] / 1 = [4,5,6]
세 번째 배열 0 = 4 / 1 = 5 / 2 = 6
- 네거티브 인덱싱
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a[1,-1]). # -1 : 제일 마지막 요소
>> 10
2) 배열 슬라이싱 Arrays Slicing
배열 슬라이싱은 [ : ] ➤ 주어진 인덱스에서 다른 인덱스로 요소를 가져오는 것
- [ start : end ] (*end 인덱스는 제외)
a = np.array([1,2,3,4,5,6,7])
print(a[1:5])
>> [2,3,4,5]
print(a[4:]) # index 4에서 끝까지
>> [5,6,7]
print(a[:4]) # 처음부터 index 3까지 (end index 4전까지)
>> [1,2,3,4]
print(a[-3:-1]) # 마지막에서 숫자 계산, 마지막 index의 3번째부터 1번째 전까지
>> [5,6]
- [ start : end : step ] : step (건너뛸 간격) 슬라이싱 단계 설정
a = np.array([1,2,3,4,5,6,7])
print(a[1:5:2]) # 요소 1부터 4에서 2 step씩 건너뛴 요소
>> [2,4]
print(a[::2]) # 전체에서 2 step씩 건너뛴 요소
>> [1,3,5,7]
- 2차원 배열 슬라이싱
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a[1,1:4]) # 0과 1 두 요소 중 두 번째 요소에서 1에서 4 전까지 요소를 슬라이싱함.
>> [7,8,9]
print(a[0:2,2]) # 두 요소 [1,2,3,4,5]와 [6,7,8,9,10]에서 인덱스 2를 반환
>> [3,8]
print(a[0:2,1:4])
>> [[2,3,4]
[7,8,9]]
반응형
'studies' 카테고리의 다른 글
[WordSmith] Corpus(코퍼스)와 WordSmith Tool(워드스미스) (1) | 2023.08.15 |
---|---|
[python] 파이썬에서 파일 사용 (파일 읽고 쓰고 저장하기) (0) | 2023.07.02 |
[NumPy] 01. 넘파이란 무엇인가. (0) | 2023.06.29 |
플립 러닝 기반 수업 모형 (0) | 2022.06.15 |
플립 러닝 설계 고려 사항, FSIP (0) | 2022.06.13 |