카테고리 없음

넘파이에서 인덱스 배열을 원-핫 인코딩 된 배열로 변환하십시오.

스택큐힙리스트 2023. 4. 26. 17:51
반응형

인덱스 1D 배열이 주어졌을 때:

a = array([1, 0, 3])

이것을 2D 배열로 원핫 인코딩하고 싶습니다.

b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])

답변 1

충분한 열을 가진 b 0으로 초기화된 배열을 만듭니다. 그런 다음 각 행 i 에 대해 a[i] 열을 1 로 설정합니다.

>>> a = np.array([1, 0, 3])

>>> b = np.zeros((a.size, a.max() + 1))

>>> b[np.arange(a.size), a] = 1

>>> b

array([[ 0., 1., 0., 0.],

[ 1., 0., 0., 0.],

[ 0., 0., 0., 1.]])

답변 2

NumPy에서 인덱스 배열을 원-핫 인코딩 배열로 변환하는 방법을 알아보세요.

NumPy는 파이썬에서 배열 및 행렬 계산을 위한 대표적인 라이브러리입니다. 이 라이브러리는 다양한 수학 함수를 제공하며, 인덱싱(indexing) 및 슬라이싱(slicing) 기능을 지원하는 다차원 배열 객체를 사용합니다.

인덱스 배열은 0에서부터 n까지의 정수로 이루어진 1차원 배열입니다. 이 배열을 one-hot encoded 배열로 변환하려면, 우선 원하는 배열의 크기를 정의해야 합니다. 이 크기는 인덱스 배열에서 최댓값을 찾아 +1을 하면 됩니다.

다음으로, np.eye() 함수를 사용하여 one-hot encoded 배열을 생성합니다. 이 함수는 대각 행렬(diagonal matrix)을 생성하는데, 대각선에는 1이 있고 나머지는 0인 행렬입니다. 이 함수를 사용하면 one-hot encoded 배열을 쉽게 생성할 수 있습니다.

예를 들어, 다음과 같은 인덱스 배열이 있다고 가정해보겠습니다.

```

import numpy as np

idx = np.array([2, 0, 1, 3])

```

이 배열을 one-hot encoded 배열로 변환하려면 다음과 같이 코드를 작성할 수 있습니다.

```

one_hot = np.zeros((idx.size, idx.max()+1))

one_hot[np.arange(idx.size), idx] = 1

```

이 코드는 먼저 one-hot encoded 배열의 크기를 정의합니다. idx.size는 인덱스 배열의 길이이고, idx.max()+1은 원-핫 인코딩된 배열의 크기입니다. 그리고 np.zeros() 함수를 사용하여 모든 요소가 0인 배열을 생성합니다.

이후 np.arange() 함수를 사용하여 인덱스 배열의 인덱스를 생성합니다. 이 함수는 0부터 인덱스 배열의 길이까지의 정수를 생성합니다.

마지막으로, 생성된 인덱스 배열과 one-hot encoded 배열을 매핑하는 코드(`one_hot[np.arange(idx.size), idx] = 1`)를 작성합니다. 이 코드는 np.eye() 함수처럼 각 행의 대각선 요소를 1로 바꾸는데 사용됩니다.

결과적으로, one-hot encoded 배열은 다음과 같이 출력됩니다.

```

[[0. 0. 1. 0.]

[1. 0. 0. 0.]

[0. 1. 0. 0.]

[0. 0. 0. 1.]]

```

이렇게 인덱스 배열을 one-hot encoded 배열로 변환하는 방법을 알아보았습니다. 이 함수는 다양한 딥 러닝 모델에서 사용되며, 데이터 전처리에 유용하게 사용됩니다.

반응형