Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Heapreplace
- 필답형
- request Method
- np.load()
- 빅데이터
- 가변매개변수
- deg2rad
- 빅데이터분석기사
- list
- Python
- Math Function
- coding
- np.save()
- 비가변매개변수
- 실기
- kaggle
- np.savetxt()
- os.path.join
- namedTuple
- 빅분기
- 작업형
- matplotlib
- Collections
- set_index
- heapmerge
- linalg.solve()
- array
- numpy
- BASIC
- DEEPLEARNING
Archives
- Today
- Total
맞춤형 플랫폼 개발 도전기 (웹개발, 딥러닝, 블록체인)
Python Numpy Basic 2 (Dimension) 본문
차원 변경
1. 1차원으로 변경
ravel() : 다차원배열을 1차원으로 변경 (흔히 '펼친다'라고 말함) → iterable.ravel() or np.ravel(iterable)
order 파라미터 : 행 기준(C), 열 기준(F)
x = np.arange(15).reshape(3, 5)
np.ravel(x, order='C') # '행' 기준으로 펼친다
np.ravel(x, order='F') # '열' 기준으로 펼친다
# array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
# array([ 0, 5, 10, 1, 6, 11, 2, 7, 12, 3, 8, 13, 4, 9, 14])
flatten() 과 차이점 : iterable.flatten() 할 경우에는 사본이 만들어지는 것이라서 원본이 변하지 않는다
iterable.ravel() 하면 원본까지 바뀐다
2. 차원 자동 제거
squeeze() : 차원(axis) 중, size가 1 인것을 찾아 스칼라 값으로 바꿔 해당차원을 제거
x = np.arange(4).reshape(2, 1, 2)
x.squeeze()
# array([[0, 1],
# [2, 3]])
np.expand_dims(iterable, index) : 0번째 axis(인덱스) 에 새로운 차원 삽입
보통 차원 추가는 맨 앞(0), 맨 뒤(-1)에 추가하는 경우가 많음
x = np.arange(4).reshape(2, 2)
y = np.expand_dims(x, 1)
y.reshape(2,1,2)
y.shape
y.squeeze()
# x (2, 2) --> y (2, 1, 2)
np.newaxis
a = np.array([2, 0, 1, 8]) # 1차원 벡터
a1 = a[np.newaxis, :] # (1, 4)
a2 = a[:, np.newaxis] # (4, 1)
3. 차원 축 바꾸기
np.transpose(iterable, 차원) == iterable.T (바꿀 축(차원)까지 지정해줄 수 있음)
np.swapaxis(iterable, 축번호, 축번호)
a = np.arange(20).reshape(4,5)
a.T # np.transpose(a), np.swapaxes(a, 0, 1)와 동일
# array([[ 0, 5, 10, 15],
# [ 1, 6, 11, 16],
# [ 2, 7, 12, 17],
# [ 3, 8, 13, 18],
# [ 4, 9, 14, 19]])
b = np.arange(24).reshape(2, 3, 4)
b.T
# array([[[ 0, 12],
# [ 4, 16],
# [ 8, 20]],
#
# [[ 1, 13],
# [ 5, 17],
# [ 9, 21]],
#
# [[ 2, 14],
# [ 6, 18],
# [10, 22]],
#
# [[ 3, 15],
# [ 7, 19],
# [11, 23]]])
np.transpose(b, (2, 1, 0))
# array([[[ 0, 12],
# [ 4, 16],
# [ 8, 20]],
#
# [[ 1, 13],
# [ 5, 17],
# [ 9, 21]],
#
# [[ 2, 14],
# [ 6, 18],
# [10, 22]],
#
# [[ 3, 15],
# [ 7, 19],
# [11, 23]]])
4. 차원에 따른 연산 차이
np.sum( iterable , axis=0 )
axis 는 복수개로 줄 수도 있음
axis = 0 이다 → 차원 ( x, y ) 에서 axis = 0에 해당하는 x 를 삭제한다고 생각하면 편함 (연산을 x만큼 시킨다 생각)
그럼 결과는 y개로 이루어진 1차원 배열이 남게 되는 것
x = np.arange(24).reshape(3, 4, 2)
np.sum(x, axis=0)
# array([[ 0, 1, 2, 3, 4],
# [ 5, 6, 7, 8, 9],
# [10, 11, 12, 13, 14]]) 에서
# 아래와 같이 뽑아내는 것 (3,5) 에서 3을 없애버린 것
# array([15, 18, 21, 24, 27])
np.sum(x, axis=(1, 2))
# 1, 2열에 있던 4, 2 없어지고 3만 남음
# array([ 28, 92, 156])
'딥러닝·머신러닝 > Python' 카테고리의 다른 글
Python Numpy Basic 4 (Linalg) (0) | 2021.10.31 |
---|---|
Python Numpy Basic 3 (Broadcasting, Boolean Indexing) (0) | 2021.10.31 |
Python Numpy Basic 1 (Array, Random) (0) | 2021.10.30 |
Python Visualization Errors (기본적인 Graph 시각화와 Image 시각화 / 오류들) (1) | 2021.07.17 |
Python Base (Anaconda 설치부터 기본까지) (0) | 2021.07.15 |
Comments