NumPy 1차원 배열에서 원소에 접근하고 인덱싱하는 다양한 방법을 소개하고자합니다.
1. 원소 접근
NumPy 1차원 배열의 각 원소에 접근하는 가장 간단한 방법은 인덱스를 사용하는 것입니다.
인덱스는 0부터 시작하며, 대괄호([]) 안에 인덱스를 지정하여 해당 위치의 원소에 접근할 수 있습니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
# 인덱스 2에 있는 원소에 접근
print(arr[2])
# 출력: 3
위의 예시에서 arr[2]는 인덱스 2에 있는 원소인 3에 접근합니다. (0부터 체크하면 0,1,2)
2. 슬라이싱
슬라이싱은 배열의 일부분을 추출하는 방법입니다.
시작 인덱스부터 끝 인덱스 이전까지의 원소를 선택하여 새로운 배열을 생성합니다.
슬라이싱은 콜론(:)을 사용하여 표현하며, [시작 인덱스:끝 인덱스]와 같은 형태로 사용됩니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
# 인덱스 1부터 인덱스 3 이전까지의 원소 추출
print(arr[1:3])
# 출력: [2 3]
arr[1:3]는 인덱스 1부터 인덱스 3 이전까지의 원소를 추출하여 [2, 3] 배열을 생성합니다.
3. 부울 인덱싱
부울 인덱싱은 조건에 따라 배열의 원소를 선택하는 방법입니다.
부울 인덱싱은 조건을 만족하는 원소에 대해 부울(True/False) 값을 가지는 배열을 생성하여
이를 인덱스로 사용하여 해당 원소를 선택하는 방법입니다.
부울 인덱싱은 주어진 조건을 간단하게 표현하고, 배열의 원소 중에서 필요한 원소들을 선택하는 데에 매우 유용합니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
# 조건을 만족하는 원소에 대한 부울 배열 생성
mask = arr > 3
print(mask)
# 출력: [False False False True True]
# 부울 배열을 사용하여 조건을 만족하는 원소 선택
selected = arr[mask]
print(selected)
# 출력: [4 5]
위의 예시에서 arr > 3은 배열 arr의 각 원소가 3보다 큰지 여부를 판단하여 부울 배열 mask를 생성합니다.
mask는 [False, False, False, True, True]로 구성되며, True에 해당하는 인덱스의 원소를 선택하여 selected 배열에 저장합니다.
따라서 selected는 [4, 5]로 구성됩니다.
+ arr[mask]를 했을 때, arr에서 True에 해당하는 값만 selected에 담는 원리
1. arr 배열과 mask 배열의 길이는 동일해야 합니다. 즉, arr와 mask의 크기는 일치해야 합니다.
2. mask 배열은 True 또는 False 값을 가지는 부울 배열입니다. 이 부울 배열은 arr의 각 원소에 대응하여 조건을 만족하는지 여부를 나타냅니다.
3. arr[mask]는 mask 배열에서 True인 위치에 해당하는 arr의 원소를 선택하여 반환합니다.
따라서, arr[mask] 연산은 다음과 같은 과정으로 동작합니다.
1. mask 배열의 각 원소에 대해 True인 위치를 찾습니다.
2. 해당 위치에 해당하는 arr의 원소를 선택하여 새로운 배열을 생성합니다.
부울 인덱싱은 여러 개를 조합하여 사용할 수도 있습니다. 이를 위해 논리 연산자인 & (and), | (or), ~ (not)를 사용합니다.
4. 인덱스 배열을 사용한 접근
인덱스 배열을 사용하여 배열의 특정 위치에 해당하는 원소를 선택할 수 있습니다.
인덱스 배열은 정수 값을 가지며, 배열 내의 해당 위치에 있는 원소들을 선택합니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
# 인덱스 배열을 사용하여 원소 선택
indices = np.array([0, 2, 4])
print(arr[indices])
# 출력: [1 3 5]
indices 배열은 [0, 2, 4]로 정의되어 있으며, 이를 사용하여 arr[indices]로 원소를 선택합니다.
5. 원소 값 수정
NumPy 1차원 배열에서 원소 값을 수정하는 방법은 인덱싱을 활용하여 해당 위치의 값을 새로운 값으로 할당하는 것입니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
# 인덱스 2에 있는 원소 값을 수정
arr[2] = 10
print(arr)
# 출력: [1 2 10 4 5]
소개한 다양한 방법들을 이용하여, NumPy 1차원 배열에서 원소에 접근하고 수정할 수 있습니다.
인덱싱과 슬라이싱은 배열의 일부분을 선택하고 추출하는 데에 매우 유용하며,
부울 인덱싱을 사용하면 조건에 따라 배열의 원소를 선택할 수 있습니다.
'파이썬 (Python) > Numpy (array)' 카테고리의 다른 글
파이썬 numpy :: 배열(array) 요소 삭제 / delete(), axis 매개변수 (0) | 2023.05.21 |
---|---|
파이썬 numpy :: 배열(array)의 차원, 크기, 길이 함수 /ndim, shape, len (0) | 2023.05.19 |
파이썬 numpy :: 2차원 배열(array) 인덱싱, 원소 값 수정방법 (0) | 2023.05.19 |
파이썬 numpy :: 배열(array) 데이터타입 종류와 지정 (0) | 2023.05.18 |
파이썬 numpy :: 배열(array) 소개, 정의 / N차원 배열, ndim (0) | 2023.05.18 |