티스토리 뷰

반응형


# 메서드의 메뉴얼 확인

np.arange?   

Docstring:    # Enter : 계속, q: 종료

arange([start,] stop[, step,], dtype=None)


Return evenly spaced values within a given interval.

...


np.func??  # 함수의 코드 제공



# 정보 확인

arr1 = np.arange(10).reshape(2,5)


arr1.shape   # 배열의 모양 확인 메서드

(2, 5)


arr1.dtype    # 배열의 데이터 타입 확인 메서드

dtype('int32')


arr1.ndim    # 배열의 차원 확인

2


type(arr1)

numpy.ndarray




# 모양 변경 (a.reshape)

np.arange(10).reshape(2,5)

array([[0, 1, 2, 3, 4],

         [5, 6, 7, 8, 9]])



# 데이터 타입 변경 (astype)  * 원본 데이터와 다른 메모리 영역 사용(깊은 복사)

arr1 = np.arange(10).reshape(2,5)

arr2 = arr1.astype(float)    # 벡터연산 가능

array([[0, 1, 2, 3, 4],

       [5, 6, 7, 8, 9]])




# 행,열 전치 (T, swapaes, transpose)

축 번호

 2차원

 행

열 

Python

0

1

R

1

2

     

3차원

Python

0

1

2

R

3

1

2

arr = np.arange(20).reshape(4,5)

array([[ 0,  1,  2,  3,  4],

       [ 5,  6,  7,  8,  9],

       [10, 11, 12, 13, 14],

       [15, 16, 17, 18, 19]])

arr3 = np.arange(24).reshape(2,3,4)

array([[[ 0,  1,  2,  3],

        [ 4,  5,  6,  7],

        [ 8,  9, 10, 11]],


       [[12, 13, 14, 15],

        [16, 17, 18, 19],

        [20, 21, 22, 23]]])


# a.T : 행,열을 고정해서 전치

arr.T    # 뷰 객체 반환(원본과 같은 메모리 영역 사용)

array([[ 0,  5, 10, 15],

       [ 1,  6, 11, 16],

       [ 2,  7, 12, 17],

       [ 3,  8, 13, 18],

       [ 4,  9, 14, 19]])


# a.swapaxes(axis1, axis2) : 두 축을 전치 (순서 무관)

arr.swapaxes(0,1)    #  행,열의 전치

array([[ 0,  5, 10, 15],

       [ 1,  6, 11, 16],

       [ 2,  7, 12, 17],

       [ 3,  8, 13, 18],

       [ 4,  9, 14, 19]])

arr3.swapaxes(0,1)   # 층,행의 전치

array([[[ 0,  1,  2,  3],

        [12, 13, 14, 15]],


       [[ 4,  5,  6,  7],

        [16, 17, 18, 19]],


       [[ 8,  9, 10, 11],

        [20, 21, 22, 23]]])


a.transpose(*axes) : 전치할 축 전달 (층, 행, 열 순서 상관)

arr3.transpose(0,2,1)     #  층은 층(0), 행은 열(2), 열은 행(1)으로 전치

array([[[ 0,  4,  8],

        [ 1,  5,  9],

        [ 2,  6, 10],

        [ 3,  7, 11]],


       [[12, 16, 20],

        [13, 17, 21],

        [14, 18, 22],

        [15, 19, 23]]])




# 조건 함수 (where)  다차원에서의 원소별 적용 가능

pay = np.array([800,1000,2000,2500,3000])

np.where(pay <= 1000, 'C',

         np.where(pay <= 2000, 'B', 'A'))   # 이중 where도 가능

array(['C', 'C', 'B', 'A', 'A'], dtype='<U1')


arr2 = np.arange(24).reshape(2,3,4)     # 다차원 배열도 적용 가능

np.where(arr2 >= 10, 0, arr2)      # 10 이상이면 0, 그렇지 않으면 그대로

array([[[0, 1, 2, 3],

        [4, 5, 6, 7],

        [8, 9, 0, 0]],


       [[0, 0, 0, 0],

        [0, 0, 0, 0],

        [0, 0, 0, 0]]])



# 정렬 (a.sort) * 결과 출력이 아닌 원본 데이터 갱신

# a.sort(axis=-1, kind='quicksort', order=None)

a1 = np.array([3,8,5,7,1,2,6,9,3]).reshape(3,3)

array([[3, 8, 5],

       [7, 1, 2],

       [6, 9, 3]])

a1.sort(0)  # 서로 다른 행별(세로) 정렬

a1

array([[3, 1, 2],

       [6, 8, 3],

       [7, 9, 5]])

a1.sort(1)  # 열별(가로) 정렬

a1

array([[1, 2, 3],

       [3, 6, 8],

       [5, 7, 9]])




반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday