list의 index()와 동일한 기능을 하는 NumPy array 함수를 찾고 있습니다

조회수 27580회

발생하는 문제 및 실행환경

보통 파이썬 리스트에서는

l = list(1,2,3)
l.index(2)

이렇게 index(x)를 써서 아이템 x의 위치를 알아내는데 이 기능을 NumPy array에서 못찾고 있습니다

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    numpy에서는 numpy.where(condition[, x, y])를 씁니다.

    결과로는 tuple자료형을 반환합니다.

    import numpy
    
    myarr = numpy.array([4,3,2,1,4,6,2], int)
    arridx = numpy.where(myarr == 4)
    

    numpy.where은 index랑 완전히 같지는 않습니다.

    예를 들어 찾고자 하는 원소가 여러 개 있는 경우, index는 제일 첫 번째 index만 찾아주지만 numpy.where는 모든 원소의 index를 찾아줍니다.

    mylist = [4,3,2,4,6,2]
    listidx = mylist.index(4)
    print(listidx) #0만 출력
    
    import numpy
    
    myarr = numpy.array([4,3,2,4,6,2], int)
    arridx = numpy.where(myarr == 4)
    print(arridx) #(array([0, 3]),) 출력
    

    또 list/array를 2차원으로 설정하는 경우, 내장된 리스트의 원소를 찾을 때 index는 원소를 찾지 못합니다.

    import numpy
    
    myarr = numpy.array([[4,3,2],[4,6,2]], int)
    arridx = numpy.where(myarr == 4)
    print(arridx) #(array([0, 1]), array([0, 0])) 출력
    
    mylist = [[4,3,2],[4,6,2]]
    listidx = mylist.index(4) #4가 없기 때문에 ValueError
    print(listidx)
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)