분석 Python/구현 및 자료
[ Python ] numpy를 사용하지 않고 argmax나 argmin을 할 수 있을까?
데이터분석뉴비
2019. 5. 12. 22:10
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를 몇번이나 쓰는건지....
끝