NumPy 2차원 배열에서 원소에 접근하고 인덱싱하는 다양한 방법을 소개하고자합니다.
1. 원소 접근
NumPy 2차원 배열의 각 원소에 접근하는 가장 간단한 방법은 인덱스를 사용하는 것입니다.
인덱스는 0부터 시작하며, 대괄호([]) 안에 인덱스를 지정하여 해당 위치의 원소에 접근할 수 있습니다
import numpy as np
arr = np.array([1, 2, 3],
[ 4, 5, 6],
[7, 8, 9]])
# 특정 위치의 원소에 접근
print(arr[0, 0]) # 출력: 1
print(arr[1, 2]) # 출력: 6
위의 예시에서 'arr'은 3X3의 2차원 배열입니다.
[i, j]와 같은 형태의 인덱스를 사용하여 특정 위치의 원소에 접근할 수 있습니다.
arr[0, 0]는 첫 번째 행, 첫 번째 열의 원소인 1을 출력합니다.
2. 슬라이싱
슬라이싱은 배열의 일부분을 추출하는 방법입니다.
시작 인덱스부터 끝 인덱스 이전까지의 원소를 선택하여 새로운 배열을 생성합니다.
슬라이싱은 콜론(:)을 사용하여 표현하며, [시작 인덱스:끝 인덱스]와 같은 형태로 사용됩니다.
import numpy as np
# 2차원 배열 생성
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 행 또는 열 단위로 접근
print(arr[1]) # 출력: [4 5 6]
print(arr[:, 1]) # 출력: [2 5 8]
# 특정 범위의 원소에 접근
print(arr[0:2, 1:3])
# 출력:
# [[2 3]
# [5 6]]
: 만 있는 경우 모든 행이나 열에 접근하여 출력하게 되며, 특정 범위의 원소에 접근도 가능합니다.
arr[i]와 같은 형태의 인덱스를 사용하여 특정 행에 접근할 수 있습니다.
arr[1]은 두 번째 행인 [4, 5, 6]을 출력합니다.
또한, arr[:, j]와 같은 형태의 인덱스를 사용하여 특정 열에 접근할 수 있습니다.
arr[:, 1]은 두 번째 열인 [2, 5, 8]을 출력합니다.
arr[i:j, m:n]과 같은 형태의 인덱스를 사용하여 특정 범위의 원소에 접근할 수 있습니다.
arr[0:2, 1:3]은 첫 번째 행부터 두 번째 행과 두 번째 열부터 세 번째 열까지의 부분 배열을 출력합니다.
3. 부울 인덱싱
저번 1차원 배열의 접근에서도 소개했듯이 부울 인덱싱은 조건에 따라 배열의 원소를 선택하는 방법입니다.
부울 인덱싱은 조건을 만족하는 원소에 대해 부울(True/False) 값을 가지는 배열을 생성하여
이를 인덱스로 사용하여 해당 원소를 선택하는 방법입니다.
부울 인덱싱은 주어진 조건을 간단하게 표현하고, 배열의 원소 중에서 필요한 원소들을 선택하는 데에 매우 유용합니다.
import numpy as np
# 2차원 배열 생성
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 부울 인덱싱을 사용하여 조건을 만족하는 원소 선택
mask = arr > 5
print(mask)
# 출력:
# [[False False False]
# [False False True]
# [ True True True]]
print(arr[mask])
# 출력: [6 7 8 9]
의 예시에서 mask는 arr의 원소가 5보다 큰지 여부를 나타내는 부울 배열입니다.
mask를 사용하여 arr에서 조건을 만족하는 원소를 선택할 수 있습니다.
arr[mask]는 mask의 값이 True인 위치의 원소만 선택하여 반환합니다. 따라서 출력 결과는 6, 7, 8, 9입니다.
부울 인덱싱을 사용하면 특정 조건을 만족하는 원소를 선택하여 다양한 작업을 수행할 수 있습니다.
예를 들어, 조건을 만족하는 원소를 수정하거나 다른 값으로 대체하는 등의 작업을 할 수 있습니다.
이를 통해 배열의 특정 요소를 유연하게 조작할 수 있습니다.
4. 원소 값 수정
NumPy 2차원 배열에서 원소 값을 수정하는 방법은 인덱싱을 활용하여 해당 위치의 값을 새로운 값으로 할당하는 것입니다.
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 인덱스 2에 있는 원소 값을 수정
arr[0,1] = 10
print(arr)
# 출력: ([[1, 10, 3],
[4, 5, 6],
[7, 8, 9]])
소개한 다양한 방법들을 이용하여, NumPy 2차원 배열에서 원소에 접근하고 수정할 수 있습니다.
인덱싱과 슬라이싱은 배열의 일부분을 선택하고 추출하는 데에 매우 유용하며,
부울 인덱싱을 사용하면 조건에 따라 배열의 원소를 선택할 수 있습니다.
'파이썬 (Python) > Numpy (array)' 카테고리의 다른 글
파이썬 numpy :: 배열(array) 요소 삭제 / delete(), axis 매개변수 (0) | 2023.05.21 |
---|---|
파이썬 numpy :: 배열(array)의 차원, 크기, 길이 함수 /ndim, shape, len (0) | 2023.05.19 |
파이썬 numpy :: 1차원 배열(array) 인덱싱, 원소 값 수정방법 (0) | 2023.05.18 |
파이썬 numpy :: 배열(array) 데이터타입 종류와 지정 (0) | 2023.05.18 |
파이썬 numpy :: 배열(array) 소개, 정의 / N차원 배열, ndim (0) | 2023.05.18 |