오답노트

[Numpy] 배열 인덱싱 본문

Python/Numpy

[Numpy] 배열 인덱싱

권멋져 2022. 7. 8. 17:20

일반적인 배열 인덱싱

파이썬에서 리스트 인덱싱 방법과 같다.

1차원 배열 인덱싱

#1차원 배열
arr = np.arange(10)
print(arr) #[0 1 2 3 4 5 6 7 8 9]

print(arr[3])	# 3
print(arr[-1])	# 9

#부분 출력
print(arr[:3])	# [0 1 2]
print(arr[-2:])	# [8 9]
print(arr[3:8])	# [3 4 5 6 7]
print(arr[3:])	# [3 4 5 6 7 8 9]
print(arr[:7])	# [0 1 2 3 4 5 6]
print(arr[:-5])	# [0 1 2 3 4]
print(arr[-5:])	# [5 6 7 8 9]

2차원 배열 인덱싱

# 2차원 배열
arr = np.array([[1,2,3,4],
               [5,6,7,8,],
               [9,10,11,12]])
print(arr, arr.shape, arr.ndim)

'''''''

[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]] (3, 4) 2

'''''''

print(arr[0][3])	# 4
print(arr[0,3])		# 4	

# 부분 출력
print(arr[0,:]) # 행 출력 => [1 2 3 4]
print(arr[:,1]) # 열 출력 => [ 2  6 10]
print(arr[:2, :]) #1행 까지 , 모든 열 출력
'''''''

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

'''''''

print(arr[:1, 1:]) #0행 까지, 1열부터 출력
'''''''

[[2 3 4]]

'''''''

Fancy 인덱싱

배열에서 원하는 원소들을 한번에 조회하거나 범위를 지정하여 조회할 수 있다.

1차원 배열 Fancy 인덱싱

arr = np.array([5,10,15,20,25,30])
print(arr[[0,2,4]]) # [ 5 15 25]

 

2차원 배열 Fnacy 인덱싱

arr = np.array([[5,10,15,20,25,30],
                [35,40,45,50,55,60],
                [65,70,75,80,85,90]])

print(arr[[0,2],2:])
'''''''

[[15 20 25 30]
 [75 80 85 90]]

'''''''

print(arr[1:,[2,3]])
'''''''

[[45 50]
 [75 80]]

'''''''

배열의 Boolean 인덱싱

True 또는 False 값으로 조회를 할지 안할지 결정할 수 있다.

또는 조건문을 만들어서 해당 조건에 충족되는 모든 원소를 조회할 수 있다.

 

Boolean 인덱싱을 할때 주의할 점은 대괄호를 열어 사용할 때, 원소의 개수를 맞춰줘야한다.

2차원 이상일 경우에는 행 또는 열의 개수를 맞춰줘야한다.

1차원 배열 Boolean 인덱싱

arr = np.array([1,2,3,4])
print(arr[[True,False,True,False]]) # [1 3]
print(arr[arr>2])	# [3 4]
print(arr[arr<=2])	# [1 2]

코드블럭 2줄에서 True인 원소는 출력하고 False인 원소는 출력하지 않았다.

3, 4줄은 해당 조건식에 맞는 원소들을 출력했다.

2차원 배열 Boolean 인덱싱

arr = np.array([[1,2,3,4],
               [5,6,7,8,],
               [9,10,11,12]])
               
# 3행 4열 행열이기때문에 3개의 Boolean 값, 열은 모두 출력하므로 1개만 사용
print(arr[[True,False,True],True])
'''''''

[[ 1  2  3  4]
 [ 9 10 11 12]]
 
'''''''

print(arr[arr>4])	# [ 5  6  7  8  9 10 11 12]
print(arr[arr<=4])	# [1 2 3 4]