파이썬 기초 문법 정리3 Numpy활용(2)
파이썬 Numpy활용법에 대해서 추가적으로 알아보자.
데이터 재대입
IN
a = np.array([1, 2, 3])
a[2] = 4
a
OUT
array([1, 2, 4])
데이터 재대입(2)
IN
b = np.array([[1, 2, 3], [4, 5, 6]])
b[:, 2] = 8
b
OUT
array([[1, 2, 8], [4, 5, 8]])
배열의 복사
IN
a1=a
a1
OUT
array([1, 2, 4])
IN
a1[1] = 5
a
OUT
array([1, 5, 4])
이 경우 a1을 수정하였는데 a도 수정된다.
a1만 수정하고 싶은 경우 copy를 이용한다.
배열의 복사 - copy
IN
a2 = a.copy()
a2
OUT
array([1, 5, 4])
IN
a2[0] = 6
a
OUT
array([1, 5, 4])
IN
a2
OUT
array([6, 5, 4])
ravel과 flatten의 차이 복습
IN
c1 = b.ravel()
c2 = b.flatten()
c1[0] = 6
c2[0] = 7
c1
OUT
array([6, 2, 8, 4, 5, 8])
IN
c2
OUT
array([7, 2, 8, 4, 5, 8])
c1은 합쳐지면서 앞자리가 6으로,
c2는 합쳐지면서 앞자리가 7로
자 그렇다면 이제 b는 어떻게 됬을까
IN
b
OUT
array([[6, 2, 8], [4, 5, 8]])
ravel의 영향을 받아 b의 앞자리는 6이되는 것을 알 수 있다.
파이썬 기초문법 정리2 Numpy에 대해서(1)
Numpy는 파이썬의 서브 패키지 개념의 라이브러리로서 별도 설치가 필요하다.
주로 배열과 행열을 효과적으로 다룰 수 있도록 되어있다.
Numpy에는 배열용 데이터형 ndarray와 행열용 데이터형 matrix가 있다.
이것들의 배열과 행렬의 요소 데이터형은 한종류로 종합해야하는 경우가 있는데
이 경우는 int16이나 float32등의 numpy에서 유래된 데이터 형태가 있다.
numpy는 전용 계산 메소드가 있어서 고속으로 배열이나 행열의 계산이 가능하다.
numpy를 활용하기 위해서 먼저 설치와 import가 필요하다.
설치는 pip install numpy를 치면 자동으로 진행할 수 있다.
주로 코딩상단에 import 구문을 먼저 써준다.
IN
import numpy as np
a = np.array([1, 2, 3]) #1차원배열
a
OUT
array([1, 2, 3])
IN
print(a)
type(a)
OUT
[1 2 3]
numpy.ndarray
#프린트해보면 리스트랑 비슷하지만 데이터형은 numpy.ndarray다
IN
a.shape
OUT
(3,)
#1차원배열에 3개의 요소가 들어가있는걸 확인할 수 있다.
2차원배열도 넣오보고 확인해보자.
IN
b = np.array([[1, 2, 3], [4, 5, 6]])
b.shape
OUT
(2, 3)
차원의변환 - reshape
IN
c1=np.array([0, 1, 2, 3, 4, 5])
c2=c1.reshape((2, 3))
OUT
array([[0, 1, 2], [3, 4, 5]])
차원의변환 - reshape
IN
c1=np.array([0, 1, 2, 3, 4, 5])
c2=c1.reshape((2, 3))
OUT
array([[0, 1, 2], [3, 4, 5]])
2행3열의 행렬에 순서대로 숫자가 들어간것을 볼 수 있다. reshape는 사용시 요소수가 중요하게된다.
만약 요소수가 3, 4가 들어가면 요소가 부족해져서 에러가 나온다.
다차원행렬 1차원화하여 참조 - ravel()
IN
c3 = c2.ravel()
c3
OUT
array([0, 1, 2, 3, 4, 5])
다차원행렬 1차원화하여 복사 - flatten()
IN
c4 = c2.ravel()
c4
OUT
array([0, 1, 2, 3, 4, 5])
값은 ravel과 같다.
numpy배열의 요소들의 데이터형 확인 - 변수.dtype
기본적으로 int64가 할당되고 변경 가능하다.
IN
d= np.array([1, 2], dtype=np.int16)
d.dtype
OUT
dtype('int16')
numpy배열의 요소들의 데이터형 변경 - 변수.astype
부동소수점은 np.float16을이용한다.
IN
d.astype(np.float16)
OUT
array([1., 2.], dtype=float16)
인덱스와 슬라이스
배열로부터 부부적인 데이터를 취득할 때 간단히 하는법이 인덱스와 슬라이스가있다.
IN
print(a)
a[0]
OUT
[1 2 3]
1
표준의 리스트배열과 마찬가지로 범위지정이 가능하다.
IN
a[1:] #배열은 0번부터 시작하기때문에 1번째부터는 2부터 표시가된다.
OUT
array([2, 3])
2차원일때 인덱스
IN
b[1, 0] #파이썬은 0번째부터이기 때문에
#실재로는2번째행의 1번째열이 표시됨
#위의 정의내린 b = ([[1, 2, 3], [4, 5, 6]])
OUT
4
2차원일때 슬라이스
IN
b[:, 2] #행방향전부와 열방항 3번째값 표시
OUT
array([3, 6])
IN
b[:, [0, 2]] #행방향전부와 열방항 1번째와 3번째값 표시
OUT
array([[1, 3], [4, 6]])
파이썬 기초문법 정리1 문자열 조작 관련 명령어
파이썬 문자열 조작관련 명령어
표시변환 -upper대문자, lower소문자, tilte첫글자대문자로
Input
s1 = 'hello python'
s1.upper(), s1.lower(), s1.tilte()
output
('HELLO PYTHON', 'hello python', 'Hello Python')
문자열 치환 -replace
Input
s1.replace('hello', 'Hi')
output
'Hi python'
문자열 공백으로 분할 -split
Input
s2=' spam ham eggs '
s2.split()
output
['spam', 'ham', 'eggs']
좌우 공백 없애기 - strip
Input
s2.strip()
output
'spam ham eggs'
문자열 말미 확인 - endswith
Input
s3='sample.jpg'
s3.endswith(('jpg', 'gif', 'png'))
output
True
문자열이 숫자 여부 확인 - isdigit
Input
'123456'.isdigit()
output
True
문자열의 길이 확인 - len
Input
len(s1)
output
12
문자열안에 임의의 문자가 포함되어 있는지 확인 - in
Input
'py' in s1
output
True
복수의 문자열의 연결 - join
Input
'-'.join(['spam', 'ham', 'eggs'])
output
'spam-ham-eggs'
문자열에 특정 포맷을 입힘 - format
Input
lang, num, name = 'python', 10, 'kim'
'{}은{}을 공부중입니다.'.format(name, lang)
output
'kim은python을 공부중입니다.'
인수로 순서를 지정
Input
'{1}은{0}을 공부중입니다.'.format(lang,name)
output
'kim은python을 공부중입니다.'
키워드인수명으로 지정
Input
'{n}은 {l}을 {no}번공부중입니다.'.format(n=name, l=lang, no = num)
output
'kim은 python을 10번공부중입니다.'
외우기 쉽게, 몇개씩 적어서 공부합시다!
하면된다. 데이터 사이언티스트!