[Numpy] ndarray에 값 추가하기

반응형
    반응형

    ndarray 에 값을 추가해보겠습니다. 

    리스트와 비슷한 듯 다릅니다. 

     

    ndarray append

    ndarray에서 append를 써봅시다.

    >>> import numpy as np
    >>> array = np.array([])
    >>> array = np.append(array,[1,2,3])
    array([1., 2., 3.])

     

    리스트와 다르게 추가할 ndarray를 지정을 해주고 리스트 형태로 넣습니다.

    값 하나만 넣으면 굳이 리스트로 안 해도 됩니다.

     

    >>> array = np.array([])
    >>> array = np.append(array,1)
    array([1.])

     

    차원을 늘리며 append

    numpy를 쓰는 가장 큰 이유는 벡터화를 시켜 계산을 하는 목적이기 때문에 차원을 생각하면서 코딩작업을 해야합니다.

    ndarray의 차원을 늘려서 append를 하려면 모양을 미리 정해놔야 합니다. 그렇지 않으면 위에서 처럼 1차원으로 배열이 됩니다. 그리고 애초에 1차원의 array였기 때문에 1차원으로 인식합니다.

     

    >>> array = np.array([])
    >>> array = np.append(array,[1,2,3],axis=0)
    >>> array = np.aapend(array,[4,5,6],axis=0)
    array([1., 2., 3.,4.,5.,6.])

    이제 모양을 바꾸어보겠습니다. 하던대로 먼저 해보겠습니다.

    >>> array = np.empty((0,3))
    >>> array = np.append(array,[1,2,3],axis=0)
    >>> array = np.append(array,[4,5,6],axis=0)

     

     

    그럼 바로 오류가 나옵니다. 반드시 정해진 모양에 맞는 것을 넣어야 합니다. 추가이므로 axis에 맞게만 맞춰주면 됩니다.

    axis=0 이므로 밑으로 하나씩 추가되도록 하는거고

    [[1,2,3],[4,5,6]] 을 만들고 싶으면 리스트당 3개의 원소를 가지므로 (0,3) 행렬로 만들어 놓습니다.

    그리고 리스트 자체를 추가해야하므로 np.array([[1,2,3]])으로 해서 하나의 행렬로 만들어서 추가합니다.

    0부분은 axis=0으로 설정하기 때문에 큰 문제가 없습니다.

    그러면 다음과 같이 내가 원하는 모양이 나옵니다.

    >>> array = np.empty((0,3))
    >>> array = np.append(array,np.array([[1,2,3]]),axis=0)
    >>> array = np.append(array,np.array([[4,5,6]]),axis=0)
    >>> array
    array([[1., 2., 3.],
           [4., 5., 6.]])

     

     

    댓글

    Designed by JB FACTORY

    ....