파이썬/파이썬 심화
[파이썬 심화] 1-2. NumPy 배열 인덱싱
Harvie
2023. 6. 1. 08:00
반응형
인덱싱
- 기존의 인덱싱과 매우 유사
import numpy as np
a = np.array([0,1,2,3,4])
print(a) #[0 1 2 3 4]
print(a[0]) # 0
print(a[1]) # 1
print(a[-1]) # 4
- n차원 일 때는 콤마( , )로 구분
import numpy as np
a = np.array([[0,1,2],[3,4,5])
print(a)
'''
결과
[[0 1 2]
[3 4 5]]
'''
print(a[0,0]) # 0
print(a[0,1]) # 1
print(a[1,0]) # 3
print(a[-1,-1]) # 5
슬라이싱
- 기존의 인덱싱과 매우 유사
a = np.array([0,1,2,3,4])
print(a) # [0 1 2 3 4]
print(a[1:3]) # [1 2]
print(a[3:]) # [3 4]
print(a[:1]) # [0]
print(a[:]) # [0 1 2 3 4]
- n차원 일 때
na = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
print(a)
'''
결과
[[0 1 2 3]
[4 5 6 7]
[8 9 10 11]]
'''
print(a[0,1:3]) # [1 2]
print(a[1:3,0]) # [4 8]
print(a[0:2,0:2])
'''
결과
[[0 1]
[4 5]]
'''
print(a[1,:]) # [4 5 6 7]
print(a[:,2]) # [2 6 10]
print(a[:,:])
'''
결과
[[0 1 2 3]
[4 5 6 7]
[8 9 10 11]]
'''
배열 인덱싱 (array indexing)
- 기존의 인덱싱 혹은 슬라이싱 방식이 아닌 '위치 정보' 배열을 활용 -> 불(Boolean) 배열과 정수 배열 방식이 존재
- '팬시 인덱싱(fancy indexing)'이라고도 부름
불 배열 인덱싱
# 짝수 원소만 골라내기
a = np.array([0,1,2,3,4,5]) # 원래 배열
idx = np.array([True,False,True,False,True,False]) # 인덱스 배열
print(a[idx]) # [0 2 4]
a = np.array([0,1,2,3,4,5])
idx = a%2==0
print(idx) # [True False True False True False]
print(a[idx]) # [0 2 4]
print(a[a%2==0]) # [0 2 4]
print(a[a%2==1]) # [1 3 5]
정수 배열 인덱싱
# 짝수번째 위치에 있는 원소만 골라내기
a = np.array([10,20,30,40,50,60])
idx = np.array([0,2,4]) # 위에 배열과 크기가 달라도 상관 없음
print(a[idx]) # [10 30 50]
# 짝수번째 위치에 있는 원소만 골라내기
a = np.array([10,20,30,40,50,60])
idx = np.array([0,0,0,2,2,2,2,4,4]) # 위에 배열과 크기가 달라도 상관 없음
print(a[idx]) # [10 10 10 30 30 30 30 50 50]
다차원 배열 인덱싱
a = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
print([:,[True,False,False,True]])
'''
결과
[[0 3]
[4 7]
[8 11]]
'''
print(a[[0,0,2,2,1,1],:])
'''
결과
[[0,1,2,3]
[0,1,2,3]
[8,9,10,11]
[8,9,10,11]
[4,5,6,7]
[4,5,6,7]]
'''
print(a[1:3,[3,2,1,0]])
'''
결과
[[7 6 5 4]
[11 10 9 8]]
'''
반응형