ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 8.8.화요일
    TIL( Today I Learned) 2023. 8. 8. 22:25

     

    코딧 강의 & 프로그래머스 문제 복습

    Data Scientist // from  kodeit 

     

    #### numpy.where() 함수 ####

     

    numpy.where() 함수는 NumPy 라이브러리에서 제공되는 함수로, 조건에 따라 배열의 값을 선택하는데 사용됩니다. 

    이 함수는 다음과 같은 형식으로 사용됩니다:

    numpy.where(condition, [x, y])

     

    • condition: 조건을 나타내는 불리언 배열이나 조건식입니다.
    • x, y: 선택적 매개변수로서, 

     

    numpy.where() 함수는 주로 불리언 배열의 요소를 선택하거나 조건에 따라 배열의 값을 수정하는데 유용하게 사용됩니다. 예를 들어, 다음과 같은 코드를 실행해보겠습니다:

     

    import numpy as np

     

    arr = np.array([1, 2, 3, 4, 5])

    condition = arr > 3

    result = np.where(condition, arr, 0)

    print(result)

     

    위 코드에서는 arr 배열에서 값이 3보다 큰 요소들만 선택하여 새로운 배열 result를 만듭니다. 

    출력 결과는 [0 0 0 4 5]가 됩니다.

     condition은 [False False False True True]가 되고, 

    이에 따라 조건이 참인 경우는 해당 요소 값을 유지하고, 

    조건이 거짓인 경우는 0으로 대체되었습니다.

     

    import numpy as np

     

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

    condition = arr % 2 == 0

     

    result_indices = np.where(condition)  ##@@@$#$$% np.where 는 여기서 짝수가 되는 것들의 인덱스만을 // 다시말하면 조건에 충족시키는 True 값만을 가진 인덱스를 반환한다. 거기에 뒤에 x,y 가 오면 그에 맞는 배열들을 반환하고 

    print(result_indices)  # 출력: (array([0, 1, 2, 3, 4]),)

     

    result_elements = arr[result_indices]

    print(result_elements)  # 출력: [10 20 30 40 50]

     

     

    정리하자면 

    So, to summarize, 

    the np.where() function returns the index of an array that satisfies the condition, 

    and then x,y can indicate an array depending on the array.

     

     

    Yes, that's correct!

    To summarize:

    • numpy.where() 함수는 조건을 만족하는 배열의 인덱스를 반환합니다.

    따라서 numpy.where() 함수를 사용하면 배열에서 원하는 조건을 만족하는 요소들의 인덱스를 찾거나, 조건을 만족하는 요소들과 그렇지 않는 요소들을 다른 배열로 분리할 수 있습니다.

     

     

     

     

     

     

    코딧 강의에서의 실수

    array1 = np.array(revenue_in_yen)

    filter = np.where(array1 <200000)

    bad_days_revenue =(array1[filter])

    # 테스트 코드

    bad_days_revenue

     

    여기서 구지 filter라고 할 필요는 없다 아니 적극적으로 막아야한다. Fuck 로 해도 된다는 것이다 단지 변수일 뿐이다 

     

     

     

    • A로 B 만들기 // 배운 거 // try 사용 
    •  

    문제 설명

    문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

     

     

    def solution(before, after):

        before = list(before)

        for i in after:

            try:

                del before[before.index(i)]

            except:

                return 0

        return 1

     

    이 코드는 두 개의 리스트 before와 after를 비교하여 처리하는 함수인 solution을 정의합니다.

    • before 리스트를 먼저 리스트 형태로 변환합니다.
    • for 루프가 모두 실행되면, after 리스트의 모든 항목을 before 리스트에서 제거하거나, 제거할 수 없는 상황이면 함수가 종료됩니다.
    • 모든 작업이 정상적으로 수행되면 return 1로 함수를 종료하며, 이는 after 리스트가 before 리스트의 모든 항목을 성공적으로 포함하는 경우를 나타냅니다.

    즉, 이 함수는 before 리스트와 after 리스트를 비교하여 after 리스트의 항목들이 before 리스트에 모두 포함되는지를 판단하는 것을 목적으로 합니다.

     

     

     

     

     

     

    • 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

    • 문제 설명

    문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.

     

    제한사항

    • 5 ≤ myString ≤ 20
    • 1 ≤ pat ≤ 5
    • myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.

     

    입출력 예

    myString pat result
    "AbCdEFG" "dE" "AbCdE"
    "AAAAaaaa" "a" "AAAAaaaa"

     

     

    입출력 예 설명

    입출력 예 #1

    • "AbCdEFG"에서 "dE"는 한 번 등장하며 처음부터 해당 위치까지 잘라내면 "AbCdE"가 됩니다. 따라서 이 문자열이 "dE"로 끝나는 가장 긴 문자열이며, "AbCdE"를 return 합니다.

    입출력 예 #2

    • "AAAAaaaa"에서 "a"는 총 네 번 등장하며 이 중 가장 마지막에 있는 위치까지 잘라내면 "AAAAaaaa"가 됩니다. 따라서 이 문자열이 "a"로 끝나는 가장 긴 문자열이며, "AAAAaaaa"를 return 합니다.

     

    def solution(myString, pat):

        index = myString.rfind(pat) # 참고로 rfind = rindex는 같은 결과  단 에러가 없다는 전제하에서

        return myString[:index+len(pat)]

     

    이 코드는 문자열 myString에서 주어진 패턴 pat의 마지막 등장 위치를 찾아서 해당 위치까지의 문자열을 반환하는 함수인 solution을 정의합니다.

    myString 문자열에서 주어진 패턴 pat의 마지막 등장 위치를 찾습니다. myString.rfind(pat)는 문자열 myString에서 pat의 마지막 등장 위치를 찾는 메서드입니다.

    • index 변수에 pat의 마지막 등장 위치가 저장됩니다.
    • myString[:index+len(pat)]는 myString 문자열의 시작부터 index+len(pat)까지의 부분 문자열을 추출합니다. 이렇게 하면 pat의 마지막 등장 위치까지의 문자열이 추출되게 됩니다.
    • 추출된 부분 문자열을 반환합니다.

    즉, 이 함수는 주어진 문자열에서 주어진 패턴의 마지막 등장 위치까지의 문자열을 추출하여 반환합니다.

     

    What does the r in rfind mean?

     

    The 'r' in rfind stands for "reverse". In Python, the rfind method is used to search for a substring within a string, starting from the end of the string and moving towards the beginning. It returns the highest index (position) of the substring if found, or -1 if the substring is not found.

    For example, if you have the string "hello world hello", and you use rfind("hello"), it will start searching for the last occurrence of "hello" in the string and return the index where it starts, which would be 12 in this case.

     

    rfind 함수의 'r'은 "reverse"를 나타냅니다. 파이썬에서 rfind 메서드는 문자열 내에서 하위 문자열을 뒤에서부터 찾아가며 검색하는 역할을 합니다. 만약 하위 문자열이 발견되면 해당 부분 문자열의 가장 높은 인덱스(위치)를 반환하고, 만약 하위 문자열을 찾지 못하면 -1을 반환합니다.

    예를 들어, 문자열 "hello world hello"가 있을 때, rfind("hello")를 사용하면 문자열 뒤에서부터 "hello"의 마지막 발생을 찾아 해당 부분 문자열이 시작하는 인덱스를 반환합니다. 이 경우에는 12가 반환됩니다.

     

     

    또 이런 방법도 있다.

     

    def solution(myString, pat):

        answer = ""

        mem = ""

     

        for ch in myString:

            mem += ch

     

            if mem.endswith(pat):

                answer = mem

     

        return answer

     

Designed by Tistory.