[numpy] np.where , np.argsort

About_work·2024년 2월 13일
0

numpy

목록 보기
1/8

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. 예제

  1. 조건을 만족하는 인덱스 찾기:
import numpy as np

arr = np.array([8, 3, 2, 1, 5, 7])
index = np.where(arr < 5)
print(index)  # 조건을 만족하는 요소의 인덱스를 출력
  1. 조건에 따라 배열에서 요소 선택하기:
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)  # 조건이 True이면 arr1에서, False이면 arr2에서 요소를 선택

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. 1차원 배열 정렬:
import numpy as np

arr = np.array([3, 1, 2])
indices = np.argsort(arr)
print(indices)  # 출력: [1, 2, 0]
  1. 2차원 배열의 각 행 정렬:
arr = np.array([[0, 3], [2, 2]])
indices = np.argsort(arr, axis=1)
print(indices)  # 출력: [[0, 1], [0, 1]]
  1. 2차원 배열의 각 열 정렬:
arr = np.array([[0, 3], [2, 2]])
indices = np.argsort(arr, axis=0)
print(indices)  # 출력: [[0, 1], [1, 0]]
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글