* Numpy


> 과학계산, 데이터 분석에 필요한 기본 패키지

> array구조를 지원하기 위한 모듈

> 단 하나의 데이터 타입만 허용

-> 불필요한 데이터 검증이 사라져서 수치 계산시 속도 측면 유리

> 수학적 벡터연산 일부 제공(단, 문자치환은 불가)

-> 반복문 작성 필요 없이 빠른 연산 가능

> 선형대수, 난수 발생기, 푸리에 변환 가능

> -C, C++, 포트란으로 쓰여진 코드를 통합하는 도구




Numpy ndarray


> n차원의 배열 객체 또는 ndarray로 파이썬에서 사용할 수 있는 대규모 데이터 집합을 담을 수 있는 빠르고 유연한 자료 구조

> 배열의 산술 연산 기능

> ndarray의 모든 원소는 같은 자료형




> shape : 배열의 차원의 크기를 알려주는 메서드

> dtype : 배열에 저장된 자료형을 알려주는 메서드





ndarray 의 자료형

> array로 배열 생성 시 dtype을 명시하면 명시된 데이터 타입으로 변경되어 생성됨


> 각 데이터 타입의 숫자의 의미 : 하나의 원소가 차지하는 비트 수

-> 주로 대용량 데이터가 메모리나 디스크에 저장되는 방식을 제어할 필요가 있을 경우 사용 *생략가능







Ndarray의 생성 방법




numpy 모듈 가져오기

import numpy


dir(numpy)로 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층) 출력





zeros , ones, empty



> np.zeros 함수 : n개 혹은 주어진 크기의 0을 갖는 배열 생성

> np.ones 함수 : n개 혹은 주어진 크기의 1을 갖는 배열 생성

> np.empty 함수 : 주어진 크기의 초기화 되지 않은 배열 생성



view와 copy메서드

> view : deep copy기 수행되지 않은 객체


같은 메모리 영역을 공유하기때문에 한쪽만 수정해도 양 쪽 모두 변경된다.
다른 이름을 사용할 뿐 사용하는 메모리 공간은 동일


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

+ Recent posts