1 개요
넘파이는 numerical python의 줄임말. 별칭은 np.
다차원 배열의 경우, 커질수록 성능이 떨어진다. 따라서 저수준의 언어로 움직이는 무언가가 필요하게 되었다. 이에, 저수준언어로 구현된 넘파이를 사용하여 성능을 보장한다.
속도는 빠르게 했지만, 문자열데이터를 담을 수는 없다.
리스트와 달리, 숫자와 문자열을 함께 담지는 못한다. 문자데이터가 있다 한들, 숫자로 바꾸어 입력해야 한다.
공식 메뉴얼 : http://docs.scipy.org/doc/numpy/
2 용어
2.1 텐서
ndim속성으로 축의 갯수를 알 수 있다.
0D텐서 : 하나의 숫자
1D텐서 : 벡터. .ndim으로 1이 나온다.
2D텐서 : 행렬. .ndim으로 2가 나온다.
3D텐서 : 3개의 축을 갖는 것. 직육면체 형태로 해석된다.
고차원 텐서 : 이전차원의 텐서들을 하나의 배열로 합쳐 생성한다.
축의 개수 ndim속성에서 저장, shape속성엔 어떤 형태인지 알려준다.
텐서 슬라이싱을 위해선 각 축에 대해 : 를 기입할 수 있다.
3 사용법
만들기 | numpy.array([리스트1], [리스트2]) 형태로 배열을 선언한다. |
배열요소 선택하기 | 리스트에서와 동일하게 배열명[행][열] 인덱싱으로 선택한다.
혹은 배열[행, 열] 형태로도 접근 가능. |
4 내장함수
4.1 구조 파악
함수 | 설명 |
---|---|
객체.ndim | 차원을 알려준다. |
객체.shape | 배열의 크기를 알려준다. 통일된 형태를 위해 튜플로 반환한다. |
객체.dtype | 원소들의 자료형을 알려준다. |
의도 | 방법 |
---|---|
반복 | numpy.sum(배열) 배열의 모든 요소를 더한다.(for보다 빠르고 간결하다.) |
4.2 연산
의도 | 설명 | 방법 |
---|---|---|
내적 | 내적한다. | A.dot(B)
numpy.dot(텐서,텐서2) |
4.3 자료조작
의도 | 설명 | 방법 |
---|---|---|
전치 | 행렬의 행과 열을 바꾼다. | 객체.transpose() |
텐서 크기 변환 | 특정 크기에 맞게 열과 행을 재배열. | 객체.reshape((행,열)) |
배열화 | Pandas의 DataFrame을 지원하지 않는 경우 배열로 바꾸어 사용. | 객체.as_matrix() |
5 연산
5.1 브로드캐스팅
크기가 다른두 텐서에서 연산이 이루어질 때, 큰 텐서의 ndim에 맞게끔 작은텐서에 축 추가.