* Numpy
> 과학계산, 데이터 분석에 필요한 기본 패키지
> array구조를 지원하기 위한 모듈
> 단 하나의 데이터 타입만 허용
-> 불필요한 데이터 검증이 사라져서 수치 계산시 속도 측면 유리
> 수학적 벡터연산 일부 제공(단, 문자치환은 불가)
-> 반복문 작성 필요 없이 빠른 연산 가능
> 선형대수, 난수 발생기, 푸리에 변환 가능
> -C, C++, 포트란으로 쓰여진 코드를 통합하는 도구
Numpy ndarray
> n차원의 배열 객체 또는 ndarray로 파이썬에서 사용할 수 있는 대규모 데이터 집합을 담을 수 있는 빠르고 유연한 자료 구조
> 배열의 산술 연산 기능
> ndarray의 모든 원소는 같은 자료형
> shape : 배열의 차원의 크기를 알려주는 메서드
> dtype : 배열에 저장된 자료형을 알려주는 메서드
ndarray 의 자료형
> array로 배열 생성 시 dtype을 명시하면 명시된 데이터 타입으로 변경되어 생성됨
> 각 데이터 타입의 숫자의 의미 : 하나의 원소가 차지하는 비트 수
-> 주로 대용량 데이터가 메모리나 디스크에 저장되는 방식을 제어할 필요가 있을 경우 사용 *생략가능
Ndarray의 생성 방법
numpy 모듈 가져오기
import numpy
numpy에서 제공해주는 array생성 방법
ipython에서는 수학적 벡터연산도 일부 지원해준다.
ipython 에서는 배열의 크기가 일치하지 않더라도 반복 적용이 가능하다.
R : 서로 다른 크기를 갖는 배열이 더해지더라도 더 적은 수의 배열을 갖는게 반복됨
Python : 위 내용 불가능
메뉴얼 출력
함수명 뒤에 ? 를 붙여 실행함으로써 함수의 메뉴얼을 볼 수 있다.
함수명??를 이용해 함수의 소스도 볼 수 있다.
메서드명? 를 입력시 함수가 아니기 때문에 도움말 호출이 불가능하다.
단, array.메소드명 형식으로 출력할 시 메소드의 메뉴얼도 출력이 가능하다.
2차원 구조의 생성과 인덱싱 색인 방법
reshape를 통해 다차원 구조의 array를 생성 할 수 있다.
arange는 np의 함수,
reshape는 제공되는 모듈이다.
array[행 , 열]
array[1, : ] : 행의 인덱스가 1인 값(2행) 출력
array[ : ,3] : 열의 인덱스가 3인 값(4열) 출력
array[ : , :2] : 열의 인덱스가 2 미만인 값(1,2열) 출력
array[2,2] : 행의 인덱스가 2, 열의 인덱스가 2인 값(3행3열) 출력
array[1,1] = 10 : 단일 차원과 마찬가지로 해당 값에 10을 삽입.
array구조에서도 슬라이스 색인이 가능하다.
전체 구조에서 열의 인덱스가 1, 3인 값을 묶어서 출력하고 싶을 시
array[ : , [ 1, 3]] 으로 출력한다
broadcast 규칙
> 동일한 크기를 갖는 사이즈가 존재한다면 작은쪽의 배열을 큰쪽에 맞춰 반복 처리
- arr1은 2*5, arr1[0]은 1*5구조이기 때문에 arr1[0]의 배열을 arr1에 맞춰 반복적으로 처리.
> 사이즈가 일치하는게 있지만, 서로 다른 방향이라면 불가능.
- 행은 행끼리, 컬럼은 컬럼끼리
* 해결방법
> reshape 사용
> 차원의 축소를 방지하는 슬라이스 색인 사용
3차원 구조 생성과 인덱싱
np.arange().reshape(층 지정, 행 지정, 열 지정) 으로 생성 가능하다.
array[0] : 층의 인덱스가 0인 값(1층) 출력
array[ : , 0] : 각 층마다의 인덱스가 0인 값(1층) 출력
array[ : , 0:1, 0:1] : 차원을 유지하며 각 층의 인덱스가 0인 값(1층) 출력
> np.zeros 함수 : n개 혹은 주어진 크기의 0을 갖는 배열 생성
> np.ones 함수 : n개 혹은 주어진 크기의 1을 갖는 배열 생성
> np.empty 함수 : 주어진 크기의 초기화 되지 않은 배열 생성
같은 메모리 영역을 공유하기때문에 한쪽만 수정해도 양 쪽 모두 변경된다.
다른 이름을 사용할 뿐 사용하는 메모리 공간은 동일
view 대신 복사본을 얻고 싶다면 copy 메서드를 사용해야 한다.
> copy : 명시적으로 배열을 복사해주는 메서드
아까와 다르게 aa1까지 수정되지 않음.
'Python > iPython' 카테고리의 다른 글
ipython - pandas 3 (0) | 2019.02.14 |
---|---|
ipython - pandas 2 (0) | 2019.02.07 |
ipython - pandas 1 (0) | 2019.02.01 |
ipython - numpy 2 (0) | 2019.01.31 |