티스토리 뷰
# 메서드의 메뉴얼 확인
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]])
'Python > Process' 카테고리의 다른 글
[Python] NA, NaN, Null (1) | 2019.02.07 |
---|---|
[Python] Numpy 배열(수학, 통계 메서드) (2) | 2019.02.02 |
[Python] Numpy 배열(생성, 색인, 연산 ..) (0) | 2019.02.01 |
[Python] 모듈(Module), 패키지(package) (0) | 2019.01.29 |
[Python] 딕셔너리(Dictionary) (0) | 2019.01.28 |