일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #리뷰 #CSS #선택자
- #자바 #오라클 #JDBC
- #돔 트리 #form 태그 #이스케이프문자 #시작태그 #form태그
- #자바
- #오라클 #자바 #연동
- #48일차 #한 내용 #요약
- #Web #웹 #jsp #servlet
- #오라클 #용어 정리 #데이터 타입 #비교 연산자 #논리 연산자 #SELECT 문
- #오라클 #계정 생성 #테이블 #생성 #조회 #추가
- #자바 #입출력
- #스윙 #함수 #Swing
- #웹 #중요한 것
- #자바 #스윙관련 함수 #API보고 정리했음
- #자바 #입출력 #함수
- #BigDecimal
- #jdbc #자바
- #스프링 프레임 워크 #인코딩 #컨텍스트 #환경설정
- #웹 #정의 #5대 브라우저 #
- #오라클 #함수 #MAX() #MIN() #LPAD() #SUBSTR() #TO_CHAR() #복사 #지우기 #수정
- #웹 #HTTP 프로토콜
- #StringBuffer #자바 #
- #Ajax #EL #JSTL
- #오라클 #11g #테이블
- #HTML4.01또는 5의 차이 #parsing #웹브라우저 #form 태그 #태그 속성 #id #name
- #자바 #오라클 #연동
- #함수 #VIEW #시퀀스 #INDEX
- #함수 #키워드 #조인 #서브쿼리
- #제약 조건 #함수 #컬럼 변경 #테이블 변경& 삭제
- #자바 #파일 #함수
- #프로그래밍 기초
- Today
- Total
IT journey
Python-배열 2편 본문
직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :)
※ 도움이 될 만한 포스팅
참고로, 최근 포스팅 순서대로 정리해두었습니다.
Python - 내장함수 2편과 이터레이터,제너레이터,코루틴,정규표현식
Python - 모듈(외장함수) 2편(feat.파일 입출력과 추상클래스...)
우선, 스칼라부터 3차원 배열까지 알아봅시다.
1. 스칼라
○ 스칼라는 하나의 숫자입니다. 그래서 shape를 구하려해도 차원이 나오지 않습니다.
○그 예는 아래와 같습니다.
import numpy as np
a = np.array(3)
a.shape
2. 1차원 배열
○ 1차원 배열은 백터입니다. 예는 Python- 리스트, 튜플/ 배열 1편 글에서 확인해주시길 부탁드립니다.
○ 벡터의 내적을 구할 때는 dot이라는 함수를 이용합니다.
import numpy as np
a = np.array([10,20,30])
b = np.array([40,50,60])
print(a.dot(b)) #print(np.dot(a,b))와 같은 의미입니다.
np.sum(a) #a에 있는 각 요소들의 합이 나옵니다.
참고로, 벡터의 내적을 구하는 방법을 인덱스 구할 때 쓰는 방식을 빌려 설명하자면
a[0]×b[0]+a[1]×b[1]+a[2]×b[2]를 하면 됩니다.
3. 2차원 배열
○ 2차원 배열은 행렬입니다. 예는 Python- 리스트, 튜플/ 배열 1편 글에서 확인해주시길 부탁드립니다.
○ 행렬의 곱을 구할 때에는 dot이라는 함수를 이용합니다.
○ 전치행렬을 구할 때에는 T 속성을 이용합니다.
import numpy as np
x = np.array([[10,20],[50,60]])
y = np.array([[70,80],[110,120]])
#x행렬과 y행렬의 곱
print(x.dot(y)) #print(np.dot(x,y))
#각 row들의 합
print(np.sum(x,axis=0))
#각 column들의 합
print(np.sum(x,axis=1))
#전치행렬
print(x.T)
#1이 들어있는 2차원 배열
a=np.ones((2,3),"i") #dtype은 정수
a
b=np.ones_like(x,"f") #dtype은 실수
b
#0이 들어있는 2차원 배열
c=np.zeros((2,3),"i")
d=np.zeros_like(x,"f")
c
d
참고로, x = np.array([[10,20],[50,60]])를 행렬로 나타내면 아래 그림과 같습니다.
y = np.array([[70,80],[110,120]]) 행렬로 나타내는 것은 x = np.array([[10,20],[50,60]])를 행렬로 나타내는 것을 참조하시면 충분히 아실 수 있습니다.
행렬의 곱을 구하는 방법은 R-벡터,행렬 글에서 참고해주시길 부탁드립니다.
○ 빨간색은 axis=0을 나타낸 예이고 파란색은 axis=1을 나타낸 예입니다.
○ 전치행렬에 대한 설명은 R-벡터,행렬 글에서 참조해주시길 부탁드립니다.
4. 3차원 배열
○ 3차원은 면, 행, 열로 이루어져 있습니다.
import numpy as np
x = np.array([[[10,20,30,40],
[50,60,70,80],
[90,100,110,120]],
[[130,140,150,160],
[170,180,190,200],
[210,220,230,240]]])
x
#깊이(면)의 개수
print(len(x))
#행의 개수
print(len(x[0]))
#열의 개수
print(len(x[0][0]))
#1이 들어있는 3차원 배열
a=np.ones((2,3,4),"i")
b=np.ones_like(x,"f")
a
b
#0이 들어있는 3차원 배열
c=np.zeros((2,3,4),"i")
d=np.zeros_like(x,"f")
c
d
▶ 참고로, 아래 코드에서 나온 x로 면, 행, 열을 아래 나온 그림에 표시한 색으로 알아보겠습니다.
빨간색은 면이 되는 것이고, 파란색은 행, 노란색은 열이 됩니다.
코드를 돌리면 왜 면, 행, 열의 개수가 왜 그렇게 나오는지 이제는 이해가 될것입니다.
▶ 참고로, np.zeros((2,3,4),"i")에서 나왔던 i에 대해서 생각해보는 시간을 가져보겠습니다.
i는 dtype의 접두사로서, int(정수형)을 말합니다.
또 다른 dtype의 접두사는 아래 표와 같습니다.
b | boolean | b |
i | int(정수형) | i8(64비트) |
u | 부호없는 정수 | u8(64비트) |
f | 부동소수점 | f8(64비트) |
c | 목소수 부동소수점 | c16(128비트) |
0 | 객체 | 0(객체에 대한 포이터) |
S | 바이트 문자열 | S24(24글자) |
U | 유니코드 문자열 | U24(24 유니코드 글자) |
▶ 참고로, inf 는 무한대, NaN 는 not a number, N/A 는 not available(not applicable) 입니다.
-------------------------위 배열들을 복사하고 싶을 시--------------------
= 이나 copy함수나 deepcopy함수를 씁니다.
- 변수A=변수B 를 쓰게 되면 변수A에 있는 내용이 하나만 변경되더라도 변수B의 내용도 변경되어있는 모습을 확인할 수 있습니다.
- 변수 A = 변수B.copy를 쓰게 되면 변수A에 있는 내용이 하나만 변경되더라도 변수B의 내용도 변경되어있는 모습을 확인할 수 있습니다.
- 변수 A = copy.deepcopy(B)를 쓰게 되면 변수 A가 변경된다하더라도 변수B의 내용은 변경되지 않습니다.
이제, 스칼라부터 3차원 배열까지 알아보았으니, 브로드캐스팅에 대해 알아봅시다.
브로드캐스팅(Broadcasting)
○ 정의 -> 차원이 다른 배열들간의 연산이 가능하게 하는 것을 말합니다.
○ 조건 -> 차원의 짝이 맞거나 차원의 크기가 최소 1이라면 가능합니다.
○ 예
import numpy as np
a = np.array([[70,80],[110,120]])
b = np.array([1, 2])
c = 10
d= np.arange(6).reshape(6,1)
a+b #+,-,/,*,% 연산됩니다.
a*c
b+d
- 참고로, a+b의 연산을 간략히 아래 그림을 통해 설명해보겠습니다.
a와 b를 브로드캐스팅 하게 되면 빨간색이 더 추가되어 연산합니다.
이제, 브로드캐스팅 예에 대한 코드를 돌린 후의 결과에 대해 이해 하실 수 있을 껍니다.
- 참고로, a÷c의 연산을 간략히 아래 그림을 통해 설명해보겠습니다.
a와 c를 브로드캐스팅 하게 되면 빨간색이 더 추가되어 연산합니다.
이제, 브로드캐스팅 예에 대한 코드를 돌린 후의 결과에 대해 이해 하실 수 있을 껍니다.
- 참고로, b+d의 연산을 간략히 아래 그림을 통해 설명해보겠습니다.
b와 d를 브로드캐스팅 하게 되면 빨간색이 더 추가되어 연산합니다.
이제, 브로드캐스팅 예에 대한 코드를 돌린 후의 결과에 대해 이해 하실 수 있을 껍니다.
'개인공부공간 > Python' 카테고리의 다른 글
Python-배열 4편 (16) | 2021.06.21 |
---|---|
Python-배열 3편 (18) | 2021.06.18 |
Python- 리스트, 튜플/ 배열 1편 (16) | 2021.06.16 |
Python - 내장함수 2편과 이터레이터,제너레이터,코루틴,정규표현식 (10) | 2021.06.01 |
Python - 모듈(외장함수) 2편(feat.파일 입출력과 추상클래스...) (18) | 2021.05.31 |