배열은 가까이에 - 기본 통계 데이터 계산
(1) 평균 계산하기
(2) 배열의 의미
- 입력받은 모든 숫자들을 하나의 변수에 저장.
- 파이썬 리스트는 동적 배열.
- 배열은 연속된 메모리 영역에 순서대로 저장된다는 특성 때문에 가운데를 지우게 되면 나머지들을 앞으로 당겨줘야 함. 추가시에는 뒤로 밀어 공간을 확보하고 삽입.
- 리스트는 배열과는 다르게 연속된 위치가 아닌 떨어진 영역에 저장된다. 포인터 개념이 있어 한 메모리의 포인터가 다음 메모리의 포인터(위치)를 가리킴.
- 파이썬에서 리스트는 별도의 import가 필요 없지만 array를 사용하기 위해서는 import가 필요함.
- 리스트 안의 element 사이에 다른 타입의 자료형이 허용됨. 하지만 배열은 처음부터 element 유형을 지정해서 생성. 다른 타입 허용 안됨.
끝판왕 등장! Numpy로 한 방에
(1) 장점
- 다차원 배열 ndarray 데이터 타입을 지원
- 반복문 작성 필요없이 전체 데이터 배열에 빠른 연산을 제공하는 표준수학함수 제공
배열 데이터를 디스크에 저장/불러오기 가능
- 선형대수, 난수 발생기, 푸리에 변환이 가능. C/C++, 포트란 코드 통합.
- ndarray.size: 행렬 내 원소의 개수
- ndarray.shape: 행렬의 모양
- ndarray.ndim: 행렬의 축 개수 의미
- reshape(): 행렬의 모양을 바꿔줌. 모양을 바꾸기 전후 행렬의 총 원소 개수가 맞아야 함. ex) [10, 1] -> [5,2]
- 브로드 캐스트: ndarray 객체에 상수 연산. 스칼라 합/곱 등
- 슬라이스와 인덱싱
7) 랜덤
- np.random.randint(): 0~1사이의 실수
- np.random.choice(): ()안의 수 중 하나
- np.random.permutation(): ()안의 수로 랜덤배열을 만들어줌.
- np.random.normal()
- np.random.uniform()
8) 전치행렬
- arr.T: 행과 열 전치
- np.transpose: 축을 기준으로 행렬의 행과 열 바꾸기
데이터의 행렬 변환
(1) 픽셀과 이미지
- 컬러스케일: RGB, 3채널 튜플. 투명도 포함시 RGBA 4채널 튜플.
- 그레이스케일: 1채널 튜플.
- 좌상단이 시작점.(0,0)
(2) 이미지 관련 라이브러리
- matplotlib
- PIL
(3) 간단한 이미지 조작
- open: Image.open() 흑백모드로 열려면 Image.open().convert('L')
- size: Image.size
- filename: Image.filename
- crop: Image.crop((x0, y0, xt, yt))
- resize: Image.resize((w, h))
- save: Image.save()
- color value: Image.getcolor()
구조화된 데이터란 (= dict)
구조화된 데이터와 Pandas
Pandas의 특징
(1) Series
- 일련의 객체를 담을 수 있는, 1차원 배열과 비슷한 자료 구조.
- 배열 형태인 리스트, 튜플, 딕셔너리를 통해서 만들거나 NumPy 자료형으로도 만들 수 있음.
1) Series의 인덱스
- series.value: array 형태로 값 호출
- series.index: 인덱스의 이름을 정해줄 수 있다. 기본값은 정수.
- 인덱스를 다른 값으로 변경 가능하다는 것은 인덱스가 리스트의 인덱스이면서, 딕셔너리의 키와 같은 기능으로 작용할 수 있다는 것.
- 정수형태에서는 리스트와 유사, 값이 할당된 상태는 딕셔너리와 유사.
- 값이 할당된 인덱스는 슬라이싱 가능.
2) Series의 Name
- Series 객체와 인덱스는 모두 name 속성이 있다. 이 속성은 Pandas의 DataFrame에서 매우 중요.
(2) Data Frame
1) Series로 변환
- 리스트로 나온다
- pd.Series(data)
2) DataFrame으로 변환
- 테이블로 나온다.
- pd.DataFrame(data)
- csv파일은 DataFrame으로 읽는다.