관리 메뉴

IT journey

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

개인공부공간/Python

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

step 2021. 6. 16. 22:14
728x90
반응형

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

※ 도움이 될 만한 포스팅

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

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

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

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

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

Python - 클래스 2편

Python - 클래스 1편

Python-함수

Python - 제어문

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

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

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

Python - 내장함수 1편


1. 리스트, 튜플

(1) 1차원 리스트와 1차원 튜플

Python-자료형(리스트,튜플) 에서 다루었으니 참고 부탁 드립니다. 

 

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

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:) 리스트 정의 여러 개의 데이터를 한 번에 보관할 수 있는 자료형을 '리스트'라고 합니다. 빈 리스트를 만드는 방법 list1 = [] #리

step-journey.tistory.com

(2) 2차원 리스트와 2차원 튜플

○ 2차원 리스트

- 기본형태는 리스트 = [[값,값],[값,값],[값,값]] 입니다.

- 이 때, 2차원 리스트는 가로 X 세로 형태로 이루어져 있습니다.

- 아래의 예에서 세로는 빨간색 동그라미를 친 부분입니다.

- 아래의 예에서 세로 역시 빨간색 동그라미를 친 부분입니다.

- 1차원 리스트에서 인덱싱할 때 0부터 센다고 했던 것처럼 행과 열 모두 0부터 시작합니다.

- 1차원 리스트처럼 변경도 가능합니다.

- 2차원 리스트 정렬하려면 sorted(*반복가능한 객체, key=정렬함수, reverse=True 또는 False)를 이용하면 됩니다.

- 2차원 리스트를 복사할 때에는 = 이나 copy함수나 deepcopy함수를 씁니다.

변수A=변수B 를 쓰게 되면 변수A에 있는 내용이 하나만 변경되더라도 변수B의 내용도 변경되어있는 모습을 확인할 수 있습니다.

변수 A = 변수B.copy를 쓰게 되면 변수A에 있는 내용이 하나만 변경되더라도 변수B의 내용도 변경되어있는 모습을 확인할 수 있습니다.

변수 A = copy.deepcopy(B)를 쓰게 되면 변수 A가 변경된다하더라도 변수B의 내용은 변경되지 않습니다.

- 아래 코드는 2차원 리스트 설명에 대한 예입니다.

*참고로, 반복가능한 객체(시퀀스 객체)는 리스트+튜플+range+문자열(str)+딕셔너리(사전형)+집합을 말합니다.

a=[[11,2],[5,4],[8,6]]
a[0][0] #0번째 세로 인덱스 0번째 가로 인덱스
a[1][0]
a[2][0]
a[0][1]=10
sorted(a,key=lambda a:a[1]) #안쪽 리스트이 인덱스 1을 기준으로 정렬
#2차원 리스트 복사
b=a
b[0][0]=20
b
a
c=a.copy()
c[0][0]=20
c
a
import copy
d = copy.deepcopy(a)
d[0][0]=20
d
a

*참고로, 3차원 리스트는 높이X세로X가로로 이루어져 있으며 기본 형태는 아래와 같습니다.

리스트 = [[값,값],[값,값],[값,값],[값,값],[값,값],[값,값]]

○ 2차원 튜플

- 기본형태는 두 가지 중 하나 선택해서 하면 됩니다.

① ((값,값),(값,값),(값,값))

② [(값,값),(값,값),(값,값)] 

- 2차원 리스트처럼 인덱싱 하면 됩니다.

- 1차원 튜플처럼 변경이 되지 않습니다.

a=[(1,2),(3,4),(5,6)]
a=((1,2),(3,4),(5,6))
a[0][0]
a[1][0]
a[2][0]

2. 배열

○ ndarray는 같은 종류의 데이터를 담는 자료형으로, 다차원 배열 객체입니다. 

이 배열을 쓰기 위해서는 numpy라는 *모듈을 불러와야 합니다.

참고로, numpy라는 모듈은 고성능 과학계산을 위한 데이터 분석 패키지로 모듈입니다.

*자료형에 대해 알고 싶으시다면, 아래 나와있는 포스팅을 참고해주시면 됩니다.

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

 

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

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:) 형변환 데이터의 형태를 변환합니다. str(데이터) : 문자열로 변환합니다. int(데이터) : 정수로 변환합니다. float(데이터) : 실

step-journey.tistory.com

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

 

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

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:) 리스트 정의 여러 개의 데이터를 한 번에 보관할 수 있는 자료형을 '리스트'라고 합니다. 빈 리스트를 만드는 방법 list1 = [] #리

step-journey.tistory.com

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

 

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

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:) 딕셔너리(사전형) 빈 딕셔너리 만들기 dic={} #key:value 가 없는 딕셔너리 기본적인 딕셔너리 모습 {Key1:Value1, Key2:Value2, Key3:Value3,..

step-journey.tistory.com

numpy의 자료형은 bool, int, float, complex(복소수), object(객체) 가 있습니다.

*모듈을 불러오는 방법에 대해 알고 싶으시다면 아래에 있는 포스팅을 참고해주시면 됩니다.

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

 

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

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:) 모듈(외장함수) 정의 함수나 변수 또는 클래스들을 모아 놓은 파일을 말합니다. 쉽게 말해, 다른 파이썬 프로그램에서 불러서

step-journey.tistory.com

○ 배열 관련 함수

▷ array()

 arange().reshape()

ndim 은 배열의 차원(rank)을 알아보는 함수입니다.

shape 은 각 차원의 크기를 튜플로 표시한 것으로 (행,열) 순으로 나옵니다.

 zeros() 은 0이 들어있는 배열을 생성합니다.

ones() 은 1이 들어있는 배열을 생성합니다.

full() 은 모든 값이 특정 상수인 배열을 생성합니다.

eye() 은 단위 행렬을 생성합니다.

dtype() 은 배열에 저장된 자료를 알려주는 객체입니다.

itemsize() 은 배열의 각 요소의 바이트에서의 사이즈로입니다.

1차원 배열에 대한 예에 대한 코드가 아래에 나와 있습니다.

import numpy as np
a = np.array([10,20,30])
type(a)
a.shape #배열의 크기
a.ndim
a.dtype
a.dtype.name
a.itemsize

위 코드에서 1차원 배열의 예를 그림으로 나타낸 것이 바로 아래 그림입니다.

2차원 배열에 대한 예에 대한 코드가 아래에 나와있습니다.

import numpy as np
b = np.array([[10,20,30],[40,50,60]])
b.shape #2행 3열
type(b)
b.ndim
b.dtype
b.dtype.name
b.itemsize

위 코드에서 2차원 배열의 예를 그림으로 나타낸 것이 바로 아래 그림입니다.

▷ 배열 관련 함수에 대한 예에 대한 코드가 아래에 나와있습니다.

import numpy as np
x = np.arange(20).reshape(5,4) #5행 4열
x.ndim
x.shape
x.dtype
x.itemsize
z = np.zeros((5,4)) #5행 4열 전부를 0으로 채움
o = np.ones((5,4)) #5행 4열 전부를 1로 채움
f = np.full((5,4),2) #5행 4열 전부를 입력한 순서로 채움
e = np.eye(5) #단위행렬

참고로, arnage() 함수에 대해 알아보겠습니다. 이 함수는 range와 사용법이 같습니다. 

그러니, Python-자료형(리스트,튜플) 글에서 range 함수를 참고해주시길 부탁드립니다.

 

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

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:) 리스트 정의 여러 개의 데이터를 한 번에 보관할 수 있는 자료형을 '리스트'라고 합니다. 빈 리스트를 만드는 방법 list1 = [] #리

step-journey.tistory.com

○ 배열 인덱싱(팬시(fancy) 인덱싱), 배열 슬라이싱

 파이썬 리스트와 유사하게 배열도 인덱싱과 슬라이싱을 합니다.

인덱싱을 통해 행렬의 각 행에서 하나의 요소를 선택할 수 있습니다.

인덱싱이나 슬라이싱 된 배열을 수정하면 원본 배열 역시 수정됩니다.

예 1

import numpy as np
x = np.arange(20).reshape(5,4)
x
x[4,3]=20
y=x[:2,:3]
y
x[:1]=20
z=x[:1]
z

▷ 예 2

import numpy as np
x=np.array([[1,2],[3,4],[5,6]])
x
x[[0,1,2],[0,1,0]]

참고로, x[[0,1,2],[0,1,0]] 의 의미에 대해 알아보겠습니다.

이에 대한 설명은 아래 그림에 나온 색깔별로 말씀드리겠습니다.

빨간색은 0행 0열, 파랑색은 1행 1열, 노란색은 2행 0열을 의미합니다.

▷ 예 3

import numpy as np
a=np.array([10,20,30,40,50,60,70,80,90])
index=np.array([0,0,1,1,2,2,2])
a[index]

x=np.array([[10,20],[30,40],[50,60]])
x[[2,0,1],:] #2행,0행,1행 순서대로 나옵니다.

b=np.array([0,1,3,2,6])
index=np.array([True,False,False,True,True])
b[index] #True인 것만 반환합니다.
b[x%3==0]

참고로, a[index]는 무엇이 나올지 생각해보겠습니다.

이에 대한 설명은 색깔별로 알아보겠습니다.

빨간색 10은 인덱스로 표현하면 무엇이 될까요? Python-자료형(리스트,튜플) 글을 보고 숙지하신 분들이라면 추측이 가능하실 꺼라 봅니다. 이것은 바로 a[0]으로 표현할 수 있습니다.

그와 마찬가지로 파란색 20은 a[1]으로, 노란색 30은 a[2] 으로 표현할 수 있습니다.

그러므로 결과값은 array([10, 10, 20, 20, 30, 30, 30])이 나오게 됩니다.

○ 배열 연산

- 기본적인 수학함수, 연산자, numpy 함수 모듈을 통해 배열의 각 요소별로 연산합니다.

#배열의 각 요소 연산(+,-,/,*,%)이 가능합니다.
np.arange(4)+1 #배열의 각 요소에 1을 더해줍니다
import numpy as np
a=np.array([[5,6],[7,8]],dtype=np.float64)
b=np.array([[10,11],[20,30]],dtype=np.float64)
a+b #np.add(a,b)
a-b #np.subtract(a,b)
a*b #np.multiply(a,b)
a/b #np.divide(a,b)
np.sqrt(a) #각 요소들을 루트 씌웁니다.
10*a
10*a+b
#각 요소별로 6인지 아닌지 판별해줍니다.
a == 6
#각 요소별로 6이상했는지 아닌지 판별해줍니다.
a>=6 
#a의 각 요소별로 6초과이고 b의 각 요소별로 초과한 것은 True로 아니면 False로 반환해서 보여줍니다.
(a>6)&(b>20) 

*참고로, &는 and 연산자로, 논리연산자입니다. 논리연산자에 대한 글을 보고 싶으시다면

Python-자료형(리스트,튜플) 글을 참조해주시길 부탁드립니다.

 

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

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:) 리스트 정의 여러 개의 데이터를 한 번에 보관할 수 있는 자료형을 '리스트'라고 합니다. 빈 리스트를 만드는 방법 list1 = [] #리

step-journey.tistory.com

 

728x90
반응형
Comments