numpy 객체 array 구조에서 기본은 행 즉, 열벡터입니다.
예를들어 다음과 같은 1차원 구조의 객체를 생성합니다.
x1=np.random.randint(0, 10, 5)
x1
Out[24]: array([3, 5, 0, 6, 7])
객체 x1의 경우 행 또는 열로 이루어진 1차원 구조입니다. array 객체에서 데이터의 우선적 배치는 행입니다. 즉, 1행을 채우고 다음으로 2행을 채우는 방법이지요.
사실 이 방법은 python에서 뿐만 아니라 다른 언어의 배열(행렬) 구조의 기본 배치방법입니다. 그러므로 위 객체는 5행인 1차원 구조로 열의 수는 정해지지 않습니다.
다른 언어에서는 이러한 경우 열은 자동으로 1로 지정되지만 numpy의 경우는 지정되지 않습니다. 다음과 같지요.
x1.shape
Out[25]: (5,)
이 경우 다른 객체와의 행렬곱 등 연산의 경우 서로의 차원의 mismatch로 에러가 유발됩니다. 그러므로 위의 결과 (5, ) 를 (5, 1)과 같이 열을 지정해 줄 필요가 있습니다.
이를 위해 np.reshape() 또는 np.newaxis를 사용합니다.
np객체.reshape(행수, 열수): 원 객체의 차원을 지정한 차원으로 전환합니다.
x1.shape
Out[25]: (5,)
x2=x1.reshape(5,1)
x2
Out[27]:
array([[3],
[5],
[0],
[6],
[7]])
x2.shape
Out[28]: (5, 1)
np객체[:, np.newaxis] : 원객체의 새로운 축 하나를 첨가합니다. 이 경우는 열에 새로운 축을 첨가하는 것으로 결과적으로 열의 수가 1로 지정됩니다.
np.newaxis를 행의 위치에 지정하면 원 객체의 행과 열이 전치됩니다.
x2=x1[:, np.newaxis]
x2
Out[30]:
array([[3],
[5],
[0],
[6],
[7]])
x2.shape
Out[31]: (5, 1)
객체 일부에 np.newaxis 적용
x3=x1[:2, np.newaxis]
x3
Out[36]:
array([[3],
[5]])
x3.shape
Out[37]: (2, 1)
np.newaxis를 행의 위치에 지정하여 원 객체를 전치시킬 수 있습니다.
x3=x1[np.newaxis, :]
x3
Out[40]: array([[3, 5, 0, 6, 7]])
x1
Out[41]: array([3, 5, 0, 6, 7])
x3.shape
Out[42]: (1, 5)
예를들어 다음과 같은 1차원 구조의 객체를 생성합니다.
x1=np.random.randint(0, 10, 5)
x1
Out[24]: array([3, 5, 0, 6, 7])
객체 x1의 경우 행 또는 열로 이루어진 1차원 구조입니다. array 객체에서 데이터의 우선적 배치는 행입니다. 즉, 1행을 채우고 다음으로 2행을 채우는 방법이지요.
사실 이 방법은 python에서 뿐만 아니라 다른 언어의 배열(행렬) 구조의 기본 배치방법입니다. 그러므로 위 객체는 5행인 1차원 구조로 열의 수는 정해지지 않습니다.
다른 언어에서는 이러한 경우 열은 자동으로 1로 지정되지만 numpy의 경우는 지정되지 않습니다. 다음과 같지요.
x1.shape
Out[25]: (5,)
이 경우 다른 객체와의 행렬곱 등 연산의 경우 서로의 차원의 mismatch로 에러가 유발됩니다. 그러므로 위의 결과 (5, ) 를 (5, 1)과 같이 열을 지정해 줄 필요가 있습니다.
이를 위해 np.reshape() 또는 np.newaxis를 사용합니다.
np객체.reshape(행수, 열수): 원 객체의 차원을 지정한 차원으로 전환합니다.
x1.shape
Out[25]: (5,)
x2=x1.reshape(5,1)
x2
Out[27]:
array([[3],
[5],
[0],
[6],
[7]])
x2.shape
Out[28]: (5, 1)
np객체[:, np.newaxis] : 원객체의 새로운 축 하나를 첨가합니다. 이 경우는 열에 새로운 축을 첨가하는 것으로 결과적으로 열의 수가 1로 지정됩니다.
np.newaxis를 행의 위치에 지정하면 원 객체의 행과 열이 전치됩니다.
x2=x1[:, np.newaxis]
x2
Out[30]:
array([[3],
[5],
[0],
[6],
[7]])
x2.shape
Out[31]: (5, 1)
객체 일부에 np.newaxis 적용
x3=x1[:2, np.newaxis]
x3
Out[36]:
array([[3],
[5]])
x3.shape
Out[37]: (2, 1)
np.newaxis를 행의 위치에 지정하여 원 객체를 전치시킬 수 있습니다.
x3=x1[np.newaxis, :]
x3
Out[40]: array([[3, 5, 0, 6, 7]])
x1
Out[41]: array([3, 5, 0, 6, 7])
x3.shape
Out[42]: (1, 5)
댓글
댓글 쓰기