파이썬(Python)/numpy

[Python]리스트 안의 내용 검색 (Numpy, where, search, 값 위치 찾기)

끄적끄적아무거나 2022. 1. 12. 08:57
반응형

 

목차

     

     

     

     

    [Python]리스트 안의 내용 검색

     

    리스트의 value(값)을 검색하고 index로 위치 정보를 확인하는 방법으로 파이썬의 넘파이(Numpy)라는 라이브러리에서 제공하는 아래의 method를 사용하시면 됩니다.

     

     

    Numpy.where(조건, 조건에 맞는 값을 바꿀 형태, 조건에 맞지 않는 값 바꿀 형태)

     

    위에서 조건 값만을 입력 할 경우 index 위치 정보만 얻을 수 있습니다.  위 조건 값을 모두 입력할 경우 원하는 조건에 맞추어 리스트(list)안의 값을 변경할 수 있습니다.

     

    아래 예제를 통해 쉽게 이해하실 수 있습니다.

     

     

     

    Where을 사용해서 값 검색하고 변경도 해보기

     

    검색 예제>>

    import numpy as np
    import random
    
    a_list = []
    for _ in range(10):
        a_list.append(random.randint(1,10))
    
    numpy_list = np.array(a_list)
    
    a_var = np.where(numpy_list == 4)
    
    print("numpy_list : ",numpy_list)
    print("a_var : ",a_var)
    print("index : ",a_var[0][0])

    4~7번 라인: 랜덤으로 1~10 사이 값으로 10개의 값을 만들어 리스트(list) 생성

    8번 라인: Numpy 리스트로 리스트 변경

    10번 라인: 값이 4인 index 값 찾기

     

     

    결과>>

    numpy_list :  [10  2  5  8  6  6  9  7  5  4]
    a_var :  (array([9], dtype=int64),)
    index :  9

    만일 찾는 값이 없을 경우 아래와 같이 출력값이 나옵니다.

    a_var :  (array([], dtype=int64),)

     

     

    찾아서 바꾸기 예제>>

    import numpy as np
    import random
    
    a_list = []
    for _ in range(10):
        a_list.append(random.randint(1,10))
    
    numpy_list = np.array(a_list)
    
    a_var = np.where(numpy_list > 4, numpy_list*10, 0)
    
    print("numpy_list : ",numpy_list)
    print("a_var : ",a_var)

    10번 라인: 4보다 큰 값은 10배로 변경하고 4보다 같거나 작은 값은 0으로 변경하기

     

     

    결과>>

    numpy_list :  [3 7 2 9 3 4 9 6 5 8]
    a_var :  [ 0 70  0 90  0  0 90 60 50 80]

     

     

     

    반응형