Python-배열 4편
직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :)
※ 도움이 될 만한 포스팅
참고로, 최근 포스팅 순서대로 정리해두었습니다.
Python - 내장함수 2편과 이터레이터,제너레이터,코루틴,정규표현식
Python - 모듈(외장함수) 2편(feat.파일 입출력과 추상클래스...)
배열 나누기
1. split
import numpy as np
a=np.arange(24)
a
np.split(a,3)
a1=np.split(a,3)
a1[0]
np.split(a,[3,4])
np.split(a,[3,4,5])
np.array_split(a,[3,4,5])
코드 설명을 그림으로 하고 부족할시 설명을 덧붙여겠습니다.
○ np.split(a,3) 의 의미는 아래 그림과 같이 3등분한 것입니다.
○ np.split(a,[3,4])의 의미는 아래 그림과 같이 나누어집니다.
이 그림에 대한 설명을 간략히 해보자면 3개(0,1,2) 그리고 4번째(3) 그리고 나머지로 나눈 것입니다.
○ np.split(a,[3,4,5])의 의미는 아래 그림과 같이 나누어집니다.
이 그림에 대한 설명을 간략히 해보자면 3개(0,1,2) 그리고 4번째(3), 5번째(4) 그리고 나머지로 나눈 것입니다.
2. dsplit, hsplit, vsplit
import numpy as np
a=np.arange(24).reshape(2,3,4)
np.dsplit(a,2)
np.dsplit(a,[2,3])
b=np.arange(36).reshape(6,6)
np.hsplit(b,2)
np.hsplit(b,[2,6])
np.vsplit(b,2)
np.vsplit(b,[2,3])
코드 설명을 그림으로 하고 부족할시 설명을 덧붙여겠습니다.
○ np.dsplit(a,2) 의 의미는 아래 그림과 같이 2등분한 것입니다.
○ np.dsplit(a,[2,3])의 의미는 아래와 같이 됩니다.
○ np.hsplit(b,2)의 의미는 아래 그림과 같이 2등분한 것입니다.
○ np.hsplit(b,[2,6])의 의미는 아래와 같이 됩니다.
○ np.vsplit(b,2)의 의미는 아래 그림과 같이 2등분한 것입니다.
○ np.vsplit(b,[2,3])의 의미는 아래와 같이 됩니다.
배열 요소 반복·추가·제거
1. 반복하기
import numpy as np
np.repeat(2,3) #2를 3번 반복
ra=np.array([[6,15],[18,60]])
np.repeat(ra,2) #ra의 각 요소를 2번 반복
#ra의 각 요소를 오른쪽으로 2번 반복
np.repeat(ra,2,axis=1) #행
#ra의 각 요소를 아래쪽으로 2번 반복
np.repeat(ra,2,axis=0) #열
2. 제거하기
d = np.array([[10,23,27,4],[24,25,28,29],[30,4,26,1]])
np.delete(d,2) #3번째 요소 제거
np.delete(d,1,0)
np.delete(d,0,1)
np.delete(d,1,1)
○ 코드를 설명해보겠습니다.
※ 참고로, d의 값은 아래와 같습니다.
▶ np.delete(d,2)는 d의 3번째 요소를 제거한다는 의미입니다.
즉 , 27을 제거한다는 의미입니다.
▶ np.delete(d,1,0) 는 2행을 제거한다는 의미입니다.
즉, 24,25,28,29을 제거한다는 의미입니다.
▶ np.delete(d,0,1)는 1열을 제거한다는 의미입니다.
즉, 10,24,30을 제거한다는 의미입니다.
▶ np.delete(d,1,1)는 2열을 제거한다는 의미입니다.
즉, 23,25,4 를 제거한다는 의미입니다.
*행과 열이 헷갈리신다면, R-벡터,행렬 글을 참고해주시길 부탁드립니다.
R-벡터,행렬
직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :) 벡터 벡터에 데이터 추가(스칼라 및 벡터들의 결합) (1) Combine 함수 c() x (2) 함수 append()는 추가되는 스칼라 혹은 벡터의 위치의
step-journey.tistory.com
3. 중복된 값 제거하기
import numpy as np
n=np.array((0,0,0,0,0,15,15,15,0,0,0,0,17,0,0,0,0,23,0,0,23,23,0,0))
n
nu=np.unique(n) #중복되는 것은 하나씩만 출력
nu
a=np.array([[0,0,0,0,0,15,15,15,0,0,0,0,17,0,0,0,0,23,0,0,23,23,0,0]])
au=np.unique(a)
au
au0=np.unique(a,axis=0) #행(중복제거하지 않음)
au0
au1=np.unique(a,axis=1) #열
au1
4. 0 제거하기
import numpy as np
n=np.array((0,0,0,0,0,15,0,0,0,0,0,17,0,0,0,0,23,0,0,0,0,0))
nn=np.trim_zeros(n) #좌우에 있는 0을 제거
nn
fn=np.trim_zeros(n,'f') #앞에 있는 0을 제거
fn
bn=np.trim_zeros(n,'b') #뒤에 있는 0을 제거
bn
5. 추가하기
#insert 방법
#수가 아닌 리스트도 넣을 수 있습니다.
import numpy as np
n=np.array([[1,2],[3,4],[5,6]])
np.insert(n,3,29) #3번째 위치(index)에 29넣기
np.insert(n,3,29,axis=0) #3번째 행을 29로 채우기
np.insert(n,2,29,axis=1) #3번째 열을 29로 채우기
#append 방법
import numpy as np
a=np.array([[2,3,6],[10,11,12]])
np.append(a,[[4,29,35]])
np.append(a,[[4,29,35]],axis=0) #행에 [4,29,35] 추가
배열 크기 조절
import numpy as np
n=np.array([[15,17],[23,21]])
n1=np.resize(n,(1,2)) #1행 2열로 만들기
n1
n2=np.resize(n,(2,4)) #2행 4열로 만들기
n2
n3=np.resize(n,(3,4)) #3행 4열로 만들기
n3
배열 요소의 재정렬
1. flip
import numpy as np
a=np.arange(27).reshape(3,3,3)
a0=np.flip(a,0)
a0
a1=np.flip(a,1)
a1
○ 코드를 설명해보겠습니다.
※ 참고로, a의 값은 아래와 같습니다.
▶ np.flip(a,0)의 코드를 실행하면 아래 그림과 같이 빨간색 박스가 위로 올라갑니다.
▶ np.flip(a,1)의 코드를 실행하면 아래 그림과 같이 빨간색 박스와 초록 박스의 위치가 변경됩니다.
2. fliplr () 는 왼쪽/오른쪽 방향으로 뒤집기를 합니다.
import numpy as np
#대각선 배열을 만들기
a=np.diag([5,8,13])
np.fliplr(a) #왼쪽/오른쪽 방향으로 뒤집기
#diag에 대해 더 자세히 알아보겠습니다.
x=np.arange(16).reshape(4,4)
np.diag(x)
np.diag(x,k=1)
np.diag(x,k=-1)
○ 코드를 설명해보겠습니다.
▶ np.diag(x)는 아래 빨간색으로 표시한 부분의 숫자가 나오고,
np.diag(x,k=1)는 아래 파랑색으로 표시한 부분의 숫자가 나오고,
np.diag(x,k=-1)는 아래 회색으로 표시한 부분의 숫자가 나옵니다.
이를 통해서 기본값은 k=0이라는 것을 알 수 있습니다.
3. fliplud는 배열을 위/아래 방향으로 뒤집기를 합니다.
import numpy as np
#대각선 배열을 만들기
a=np.diag([5,8,13])
np.flipud(a) #위/아래 방향으로 뒤집기
배열 회전
import numpy as np
r=np.array([[9,15],[6,120]])
r1=np.rot90(r,1) #반시계방향으로 90도 회전입니다.
r10=np.rot90(r,-1,(0,1)) #시계방향으로 90도 회전
r11=np.rot90(r,1,(1,0))
r2=np.rot90(r,2) #반시계방향으로 180도 회전입니다.