2017-12-17 25 views
3

간단한 질문입니다. 1D numpy 배열을 원합니다. Python 2D Numpy Array to 1D (일종의)

는 2D 배열

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

에서 '1'의 열 인덱스 이루어진가 1 차원 배열로 변환 될 수있는 방법의 각 행은 단일 '1'값을 포함하는 2 차원 배열을 감안 to

[2 2 1 1 1 1 0] 

어떻게 파이썬으로 할 수 있습니까? 해당 용어에 대해 잘 모릅니다. 그러한 변환에 대한 적절한 용어를 알려주십시오.

+1

봐. – Divakar

답변

5

첫 번째 축을 따라 최대 값과 인덱스를 찾고 있습니다 : 주어진 축을 따라 최대 값의

>>> a.argmax(axis=1) 
array([2, 2, 2, 1, 1, 1, 1, 0]) 

a.argmax(axis=None, out=None)

반환 지수.

다른 값이 반드시 1보다 작지 않으면 1을 먼저 필터링하십시오. 이 배열은 TrueFalse 값을 갖습니다. 이제 argmax()을 사용 : 0 같은 1False 같은

>>> (a == 1).argmax(axis=1) 
array([2, 2, 2, 1, 1, 1, 1, 0]) 

True 행위 때문에 bool 상속 int에서.

0

각 행에 대해 하나의 핫 인코딩 된 벡터의 핫 인덱스를 얻으려는 것처럼 보입니다. 다음과 같이

이 작업은 수행 할 수 :

  1. 곱하기 벡터 [0 1 2], 또는보다 일반적인와 매트릭스 : numpy.arange(matrix.shape[1])
  2. 합까지 당신의 매트릭스 행 : numpy.sum(matrix, axis=1)

NumPy와 배열도 있습니다 동일한 결과를 가져 오는 함수 argmax.

0

당신은 다음과 같은 NumPy와 argmax를 사용하여 수행 할 수 있습니다 numpy.argmax``에 대한

a=np.array([[ 0, 0, 1],[ 0, 0, 1], [ 0, 0, 1],[ 0, 1, 0],[ 0, 1, 0],[ 0, 1, 0],[ 1,0,0]]) 
a.argmax(1) 
array([2, 2, 2, 1, 1, 1, 0])