관리 메뉴

IT journey

Python-배열 4편 본문

개인공부공간/Python

Python-배열 4편

step 2021. 6. 21. 22:10
728x90
반응형

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :)

※ 도움이 될 만한 포스팅

참고로, 최근 포스팅 순서대로 정리해두었습니다.

Python-배열 3편

Python-배열 2편

Python- 리스트, 튜플/ 배열 1편

Python - 내장함수 2편과 이터레이터,제너레이터,코루틴,정규표현식

Python - 모듈(외장함수) 2편(feat.파일 입출력과 추상클래스...)

Python - 설치없이 이용하기,실행, 사용법

Python - 모듈(외장함수) 1편

Python - 클래스 2편

Python - 클래스 1편

Python-함수

Python - 제어문

Python-자료형(사전형,집합)

Python-자료형(리스트,튜플)

Python - 자료형 (숫자형,문자열,불린형)

Python - 내장함수 1편

728x90

배열 나누기

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도 회전입니다.
728x90
반응형

'개인공부공간 > Python' 카테고리의 다른 글

Python-Matplotlib 패키지 1편  (12) 2021.06.23
Python-모듈 random, 데이터 수를 세는 함수  (6) 2021.06.22
Python-배열 3편  (18) 2021.06.18
Python-배열 2편  (16) 2021.06.17
Python- 리스트, 튜플/ 배열 1편  (16) 2021.06.16
Comments