>백엔드 개발 >파이썬 튜토리얼 >NumPy는 열의 고유 값을 기반으로 데이터를 효율적으로 그룹화할 수 있습니까?

NumPy는 열의 고유 값을 기반으로 데이터를 효율적으로 그룹화할 수 있습니까?

DDD
DDD원래의
2024-12-05 09:32:10769검색

Can NumPy Group Data Efficiently Based on a Column's Unique Values?

NumPy에서 특정 열을 기준으로 데이터를 그룹화할 수 있나요?

소개:

데이터 그룹화는 많은 데이터 분석 시나리오에서 중요한 작업입니다. Python의 강력한 수치 라이브러리인 NumPy는 배열을 조작하는 다양한 기능을 제공하지만 전용 그룹화 기능이 부족합니다. 이 기사에서는 전용 함수를 명시적으로 사용하지 않고 NumPy에서 그룹화를 수행하는 방법을 보여줍니다.

질문:

NumPy에 배열을 그룹화하는 함수가 있나요? 제공된 배열에 표시된 첫 번째 열?

array([[ 1, 275],
       [ 1, 441],
       [ 1, 494],
       [ 1, 593],
       [ 2, 679],
       [ 2, 533],
       [ 2, 686],
       [ 3, 559],
       [ 3, 219],
       [ 3, 455],
       [ 4, 605],
       [ 4, 468],
       [ 4, 692],
       [ 4, 613]])

예상됨 출력:

array([[[275, 441, 494, 593]],
       [[679, 533, 686]],
       [[559, 219, 455]],
       [[605, 468, 692, 613]]], dtype=object)

답변:

NumPy는 "그룹화 기준" 기능을 명시적으로 제공하지 않지만 Eelco Hoogendoorn의에서 영감을 받은 대체 접근 방식을 제공합니다. 도서관. 이 접근 방식은 배열의 첫 번째 열이 항상 증가한다는 가정을 기반으로 합니다. 그렇지 않은 경우 다음을 사용하여 첫 번째 열을 기준으로 배열을 정렬해야 합니다.

a = a[a[:, 0].argsort()]

첫 번째 열 값이 증가한다는 가정을 사용하여 다음 코드는 그룹화 작업을 수행합니다.

np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])

이 코드는 첫 번째 열의 고유 값을 기반으로 배열 요소를 하위 배열로 효과적으로 그룹화합니다. 각 하위 배열은 첫 번째 열 값이 동일한 모든 요소에 대한 두 번째 열 값을 포함하는 그룹을 나타냅니다.

추가 고려 사항:

  • 이 방법의 복잡성은 O입니다. (n log(n)).
  • 결과 목록은 NumPy 배열이므로 후속 NumPy 작업에는 변환 작업이 필요합니다.
  • 성능 비교: 이 방법은 더 작은 데이터 세트의 경우 Pandas 및 defaultdict를 포함한 다른 그룹화 접근 방식보다 더 빠른 것으로 경험적으로 나타났습니다.

따라서 NumPy는 배열 조작 및 정렬 기능을 활용하여 데이터를 그룹화하는 유연하고 효율적인 방법을 제공합니다. 전용 그룹화 기능이 없어도 말이죠.

위 내용은 NumPy는 열의 고유 값을 기반으로 데이터를 효율적으로 그룹화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.