노력에는 지름길이 없으니까요

파이썬, 불리언 인덱싱이란? 본문

Python

파이썬, 불리언 인덱싱이란?

데건 2024. 7. 12. 14:56
728x90

우선 캠프에서 불리언 인덱싱에 관련하여 제공받은 자료를 아래에 정리했다.

 

  • 불리언 인덱싱(Boolean indexing)은 조건에 따라 요소를 선택하는 방법 중 하나입니다.
  • 이것은 주어진 조건에 따라 배열이나 리스트에서 요소를 선택할 수 있게 해주는 강력한 도구입니다.
  • 파이썬에서는 NumPy를 사용하여 불리언 인덱싱을 수행할 수 있고 Pandas에서 데이터를 조건에 맞게 선택할 때 많이 사용합니다. 아래에는 NumPy를 사용한 불리언 인덱싱의 개념과 코드 예시를 제시합니다.
import numpy as np

# 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 불리언 배열 생성 (조건에 따라 True 또는 False 값을 갖는 배열)
condition = np.array([True, False, True, False, True])

# 불리언 인덱싱을 사용하여 조건에 맞는 요소 선택
result = arr[condition]

# 결과 출력
print("Result using boolean indexing:", result)  # 출력: [1 3 5]

# 불리언 인덱싱을 사용하여 배열에서 짝수인 요소만 선택
evens = arr[arr % 2 == 0]

# 결과 출력
print("Even numbers using boolean indexing:", evens)  # 출력: [2 4]
  • 위의 예시에서는 NumPy를 사용하여 불리언 인덱싱을 수행하는 방법을 보여줍니다.
  • 먼저, 배열 **arr**과 조건을 담은 불리언 배열 **condition**을 생성합니다.
  • 그런 다음 불리언 인덱싱을 사용하여 조건에 따라 요소를 선택합니다. 마지막으로 선택된 요소를 출력합니다.
  • 불리언 인덱싱은 데이터 필터링 및 선택에 매우 유용하며, 데이터 분석에서 자주 사용됩니다.

 

불리언 인덱싱이 기존 리스트에서도 적용되는지 궁금해서 프로그래머스 기초 문제를 사용해서 테스트를 해봤는데,

결론부터 말하자면 가능하나, np.array와 list는 데이터형 자체가 다르니 출력되는 형식도 다르다.

 

테스트에 참고한 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/181901

즉, k의 배수를 출력하는 문제!

 

import numpy as np
def solution(n, k):
    numbers = np.array([i for i in range(1, n+1)])
    print(numbers)
    print(numbers[numbers%k==0]) #불리언 인덱싱 적용
    return 1 #numbers 자체를 return하면 에러가 생기기에 우선 1 리턴 해두었다.

내가 테스트를 위해 사용한 코드이다.

numbers에 n까지의 숫자를 array의 형태로 담고, 이 중에서 k의 배수인 숫자만을 filtering한다.

 

의도한 결과는 출력되었으나,

리스트 형태가 아니기에 정답으로 인정될 수는 없는 듯 하다.

numPy 자체가 테이블(배열)을 만들고 내부의 숫자로 계산을 하기 위한 데이터용 모듈이라 그런 듯 하다.

 

참고로, numPy 전용 연속되는 숫자를 배열에 넣는 방법에는 arange가 있다.

numbers2 = np.array.arange(1,n+1)

프로그래머스에서는 해당 메소드가 적용되지 않는다.

 

 

728x90
반응형

'Python' 카테고리의 다른 글

dictionary(사전형) 정리  (0) 2024.07.15
파이썬, 데코레이션  (0) 2024.07.15
파이썬 클래스, init과 self에 대한 이해  (0) 2024.07.12
파이썬 포맷팅  (0) 2024.07.11
join 사용법  (0) 2024.07.05