스택큐힙리스트

당신은 컴퓨터 전문가입니다. 특수 기호를 그대로 유지하면서 번역해주세요. NumPy 배열에서 N개의 최대값의 인덱스를 어떻게 얻을 수 있을까요? 본문

카테고리 없음

당신은 컴퓨터 전문가입니다. 특수 기호를 그대로 유지하면서 번역해주세요. NumPy 배열에서 N개의 최대값의 인덱스를 어떻게 얻을 수 있을까요?

스택큐힙리스트 2023. 9. 4. 00:59
반응형

넘파이는 배열에서 최대값의 인덱스를 얻는 방법을 제안합니다. 'np.argmax'을(를) 통해.

나는 비슷한 것을 원하지만, 'N' 최대값의 인덱스를 반환하고 싶습니다.

예를 들어, 만약 나에게 배열이 '[1, 3, 2, 4, 5]' 라면, 'nargmax(array, n=3)' 는 '[4, 3, 1]' 에 해당하는 인덱스를 반환할 것입니다.

답변 1

새로운 NumPy 버전(1.8 이상)에는 이를 위한 'argpartition' 라는 함수가 있습니다. 가장 큰 네 개 원소의 인덱스를 가져오려면 다음을 수행하세요.

'>>> a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])

>>> a

array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])

>>> ind = np.argpartition(a, -4)[-4:]

>>> ind

array([1, 5, 8, 0])

>>> top4 = a[ind]

>>> top4

array([4, 9, 6, 9])

'

컴퓨터 전문가입니다. 번역하면서 특수 기호를 그대로 유지하세요.

'argsort' 와 달리, 이 함수는 최악의 경우에도 선형 시간에 실행됩니다. 하지만 반환된 인덱스는 정렬되지 않으며, 이는 'a[ind]' 을 평가한 결과에서 확인할 수 있습니다. 그것도 필요하다면, 그들을 정렬한 후에 확인하세요.

'>>> ind[np.argsort(a[ind])]

array([1, 8, 5, 0])

'

이 방법으로 정렬된 순서로 상위 k개의 요소를 얻는 데에 걸리는 시간은 O(n + k log k)입니다.

답변 2

수많은 유용한 기능을 갖춘 NumPy는 파이썬에서 대규모 다차원 배열을 처리하는 데 도움이 되는 탁월한 도구입니다. 그 중에서도 특히 N개의 최댓값의 인덱스를 찾는 방법은 데이터 분석 및 머신러닝 분야에서 매우 중요하고 유용합니다.

NumPy 배열에서 N개의 최댓값 인덱스를 찾는 방법은 간단하면서도 효율적입니다. 이를 위해 numpy.argsort() 함수를 사용할 수 있습니다. 이 함수는 배열의 원소를 오름차순으로 정렬한 후, 해당 원소 인덱스를 반환합니다.

먼저, numpy.argsort() 함수를 사용하여 배열을 정렬합니다. 그러면 정렬된 배열의 인덱스가 반환됩니다. 그런 다음 반환된 정렬된 배열의 마지막 N개의 인덱스를 추출하여 최댓값의 인덱스로 사용할 수 있습니다.

예를 들어, 다음은 NumPy 배열에서 N개의 최댓값의 인덱스를 찾는 간단한 예시입니다.

import numpy as np

arr = np.array([10, 30, 20, 40, 50])

N = 3

sorted_indices = np.argsort(arr)

max_indices = sorted_indices[-N:]

print(max_indices)

위 예시에서는 arr 배열에서 3개의 최댓값 인덱스를 찾는 방법을 보여줍니다. 정렬된 배열의 인덱스를 추출하기 위해 numpy.argsort() 함수를 사용하고, 도출된 정렬된 배열의 마지막 N개의 인덱스를 선택하여 최댓값의 인덱스로 사용합니다.

이렇게하면 [2 3 4]라는 결과가 나올 것입니다. 이는 arr 배열에서 20, 40, 그리고 50이라는 세 가지 최댓값의 인덱스입니다.

NumPy를 활용하여 N개의 최댓값 인덱스를 찾는 방법을 알게되었습니다. 이 기능은 데이터 분석 및 머신러닝에서 매우 유용하며, 적절한 예시와 코드를 통해 이해하기 쉽게 설명되었습니다. 이러한 방법을 사용하여 여러분은 NumPy 배열에서 N개의 최댓값의 인덱스를 손쉽게 찾을 수 있을 것입니다.

반응형
Comments