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],