enumerate() 함수는 기본적으로 인덱스와 원소로 이루어진 튜플(tuple)을 만들어준다. 따라서 인덱스와 원소를 각각 다른 변수에 할당하고 싶다면 인자 풀기(unpacking)를 해줘야 합니다.
# 인자 풀기
>>> for i, letter in enumerate(['A', 'B', 'C']):
... print(i, letter)
...
0 A
1 B
2 C
루프를 돌리다보면 인덱스를 0이 아니라, 1로 시작하고 싶을 때가 있습니다. 이럴 때는 enumerate() 함수를 호출할 때 start 인자에 시작하고 싶은 숫자를 넘기면 된다.
>>> for i, letter in enumerate(['A', 'B', 'C'], start=1):
... print(i, letter)
...
1 A
2 B
3 C
# 행렬에서의 각각의 위치와 값 표기
for r, row in enumerate(matrix):
for c, letter in enumerate(row):
print(r, c, letter)
"""
0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
"""
이를 이용해 데이터베이스에서 가져온 서로 다른 테이블의 값을 정렬할 수 있습니다. ndarray의 특성상 서로 다른 타입의 변수들은 하나의 array에 담지 못하기 때문에, 따로 불러온뒤 정렬을 해야합니다.
import numpy as np
a = np.array([1.5, 0.2, 4.2, 2.5])
s = a.argsort()
print(s)
print(a[s])
"""
[1 0 3 2]
[0.2 1.5 2.5 4.2]
"""
두 개의 어레이에 대해 하나의 어레이를 기준으로 다른 어레이를 정렬할 수 있습니다.
import numpy as np
a = np.array([1.5, 0.2, 4.2, 2.5])
b = np.array([3.7, 2.4, 0.3, 1.9])
s = a.argsort()
a = a[s]
b = b[s]
print(a)
print(b)
"""
[1.5 0.2 4.2 2.5]
[2.4 3.7 1.9 0.3]
"""
s는 어레이 a를 정렬하는 인덱스 어레이 [1 0 3 2]입니다.
b[s]와 같이 사용하면, 어레이 a의 오름차순 순서를 기준으로 어레이 b가 정렬됩니다.
- 딥러닝은 예측력 => 어떤 feature에 집중해서 결과를 냈는 지를 알 수가 없고 예측 성능만을 올리는 데 집중
- 머신러닝은 설명력