1. np.where
numpy.where
함수는 넘파이 배열에서 특정 조건을 만족하는 요소의 인덱스를 찾는 데 사용
- 이 함수는 조건에 따라 배열의 요소를 검사하고, 조건을 만족하는 요소의 위치를 반환
- 또한, 조건에 따라 다른 두 배열에서 값을 선택하여 새 배열을 생성하는 데도 사용할 수 있습니다.
1.1.numpy.where
의 기본 사용법
1.1.1. 매개변수(Parameter):
condition
: 조건을 지정하는 배열이나 표현식입니다. 이 조건을 만족하는 배열의 요소의 인덱스가 반환됩니다.
x, y
(선택적): 조건에 따라 선택될 두 배열입니다. condition
이 참(True)일 때 x
의 요소를, 거짓(False)일 때 y
의 요소를 선택하여 새로운 배열을 만듭니다. 이 매개변수들은 선택적이며, 제공되지 않을 경우 단순히 조건을 만족하는 인덱스를 반환
1.1.2. 반환값:
condition
만 주어진 경우:
- 조건을 만족하는 요소의 인덱스를
튜플 형태로 반환
다차원 배열의 경우, 각 차원에 대한 인덱스가 별도의 배열로 튜플에 포함
- 1차원이면 길이 1의 튜플
- 2차원이면, 길이 2의 튜플
x, y
가 함께 주어진 경우:
- 같은 위치의 요소들에 대해
condition
배열에서 True에 해당하는 위치는 x
에서 값을 가져오고,
- False에 해당하는 위치는
y
에서 값을 가져와서 새로운 배열
을 구성
1.2. 예제
- 조건을 만족하는 인덱스 찾기:
import numpy as np
arr = np.array([8, 3, 2, 1, 5, 7])
index = np.where(arr < 5)
print(index)
- 조건에 따라 배열에서 요소 선택하기:
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])
condition = np.array([True, False, True, False, True])
result = np.where(condition, arr1, arr2)
print(result)
2. np.argsort
numpy.argsort
함수는 넘파이 배열의 요소를 정렬했을 때의 인덱스를 반환
- 이 함수는 배열을 직접 정렬하지 않고, 배열의 요소들이 정렬될 순서에 해당하는 인덱스 배열을 반환
- 이를 통해 원본 배열을 변경하지 않고, 정렬 순서에 따른 인덱스를 얻을 수 있음
2.1. numpy.argsort
의 사용법
2.1.1. 매개변수(Parameter):
a
: 정렬할 배열입니다.
axis
: 정렬을 수행할 축입니다. 기본값은 -1
로, 이는 배열의 마지막 축을 의미. None
을 지정하면 배열이 평탄화된 후 정렬
kind
: 정렬 알고리즘을 지정합니다. 'quicksort'
, 'mergesort'
, 'heapsort'
, 'stable'
등이 있으며, 기본값은 'quicksort'
입니다.
order
: 배열의 필드 이름을 나타내는 문자열이나 필드 이름의 리스트입니다. 이 매개변수는 구조화된 배열에서 특정 필드에 따라 요소를 정렬할 때 사용됩니다.
2.1.2. 반환값:
- 정렬된 요소의 인덱스를 포함하는
배열
- 반환되는 배열의 형태는 입력 배열
a
와 같음
2.2. 예제
- 1차원 배열 정렬:
import numpy as np
arr = np.array([3, 1, 2])
indices = np.argsort(arr)
print(indices)
- 2차원 배열의 각 행 정렬:
arr = np.array([[0, 3], [2, 2]])
indices = np.argsort(arr, axis=1)
print(indices)
- 2차원 배열의 각 열 정렬:
arr = np.array([[0, 3], [2, 2]])
indices = np.argsort(arr, axis=0)
print(indices)