[ Python ] numpy를 사용하지 않고 argmax나 argmin을 할 수 있을까?

2019. 5. 12. 22:10분석 Python/구현 및 자료

728x90

해당 작업은 어디 글을 보다가 궁금하게 되서 진행을 하게되었다

 

만약 우리가 numpy가 없다면.......... argmin, argmax는 어떻게 해야 할까?!

항상 보면 가장 작은 값 가장 큰 값을 뽑기 위해서 list를 numpy로 바꾸고 하긴 했었다.

그러면 이제 numpy를 안쓰고 해보자.

argmax 경우

output = [0.1,0.25, 0.3 ,0.2 ,0.1,0.05]
f = lambda i: output[i]
max(range(len(output)), key=f)

argmin 경우

min(range(len(output)), key=f)

그렇다면 만약 최대 2개를 찾고 싶으면?

  • 해봤는데 코드가 좀 복잡해져서 Numpy의 소중함을 알게 됬다....
output = [0.1,0.25, 0.3 ,0.2 ,0.1,0.05]
f = lambda i: output[i]
first = max(range(len(output)), key=f)

idx = [(i,output[first] - j) for i,j in enumerate(output) if output[first] - j > 0.0 ]
a = []
b = []
for i , j in idx :
    a.append(i)
    b.append(j)
    
f = lambda i: b[i]
second = min( range(len(a)) , key=f)

print(first , second)
print(output[first] , output[second])

다음과 같이 진행하였다.

loop를 몇번이나 쓰는건지....

 

728x90