"NumPy"의 두 판 사이의 차이

Pywiki
둘러보기로 가기 검색하러 가기
 
(같은 사용자의 중간 판 2개는 보이지 않습니다)
76번째 줄: 76번째 줄:
 
|
 
|
 
|
 
|
 +
|}
 +
 +
=== 구조조작 ===
 +
{| class="wikitable"
 +
!의도
 +
!방법
 +
|-
 +
|배열 붙이기
 +
|합칠 배열을 튜플로 묶어 넣어준다.
 +
np.concatenate((a, b), axis=0)
 +
 +
axis=0이라면 수직방향으로, 1이라면 수평방향으로 이어붙인다.
 
|}
 
|}
 
===연산===
 
===연산===
131번째 줄: 143번째 줄:
 
===브로드캐스팅===
 
===브로드캐스팅===
 
크기가 다른두 텐서에서 연산이 이루어질 때, 큰 텐서의 ndim에 맞게끔 작은텐서에 축 추가.
 
크기가 다른두 텐서에서 연산이 이루어질 때, 큰 텐서의 ndim에 맞게끔 작은텐서에 축 추가.
 +
 +
= 통계자료 얻기 =
 +
{| class="wikitable"
 +
!의도
 +
!설명
 +
!방법
 +
|-
 +
|회귀선(회귀식) 얻기
 +
|회귀선을 그리는 것은 그래프를 그려주는 라이브러리에서 쉽게 얻을 수 있지만, 회귀식을 돌려주지 않는 경우가 있다.
 +
때문에 회귀식 자체를 얻기 위해 사용한다. 기울기와 절편 두 데이터가 얻어진다.
 +
|z=np.polyfit(x데이터, y데이터, 1)
 +
|}
 +
 +
= 자료형 변환 =
 +
 +
=== 배열을 리스트로 ===
 +
리스트 = 배열.tolist
 +
 +
=== 리스트를 배열로 ===
 +
배열 = np.array(리스트)
 +
 +
= 관련 에러 =
 +
 +
=== ValueError: Object arrays cannot be loaded when allow_pickle=False ===
 +
보안을 위해 디폴트 옵션이 False가 되면서 생긴 오류. <code>pip install numpy==1.16.1</code> 으로 다운그래이드 하거나, 에러가 뜨는 함수에서 <code>allow_pickle=True</code> 옵션을 넣어준다.
 
[[분류:데이터 관련 라이브러리]]
 
[[분류:데이터 관련 라이브러리]]

2022년 1월 28일 (금) 16:31 기준 최신판

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 원소들의 자료형을 알려준다.
객체.size 전체 원소의 갯수.
의도 방법
반복 numpy.sum(배열) 배열의 모든 요소를 더한다.(for보다 빠르고 간결하다.)

4.2 구조조작[편집 | 원본 편집]

의도 방법
배열 붙이기 합칠 배열을 튜플로 묶어 넣어준다.

np.concatenate((a, b), axis=0)

axis=0이라면 수직방향으로, 1이라면 수평방향으로 이어붙인다.

4.3 연산[편집 | 원본 편집]

의도 설명 방법
내적 내적한다.

행렬에 사용하면 행렬곱이 된다.

행렬의 크기에 문제가 있으면 에러가 뜬다.

다음의 방법들이 있다.
  • A.dot(B)
  • numpy.dot(텐서,텐서2)
내부의 요소들을 더한다. 연산할 축을 선택할 수 있다.
설명
0 첫번째 축. 일반적으로 x축.(행)
1 일반적으로 y축(열)
2 ... 객체.shape에서 나온 3번째 축을 기준으로.
np.sum(A, axis=0)

4.4 자료조작[편집 | 원본 편집]

의도 설명 방법
전치 행렬의 행과 열을 바꾼다. 객체.transpose()
텐서 크기 변환 특정 크기에 맞게 열과 행을 재배열. 객체.reshape((행,열))
배열화 Pandas의 DataFrame을 지원하지 않는 경우 배열로 바꾸어 사용. 객체.as_matrix()

5 연산[편집 | 원본 편집]

5.1 브로드캐스팅[편집 | 원본 편집]

크기가 다른두 텐서에서 연산이 이루어질 때, 큰 텐서의 ndim에 맞게끔 작은텐서에 축 추가.

6 통계자료 얻기[편집 | 원본 편집]

의도 설명 방법
회귀선(회귀식) 얻기 회귀선을 그리는 것은 그래프를 그려주는 라이브러리에서 쉽게 얻을 수 있지만, 회귀식을 돌려주지 않는 경우가 있다.

때문에 회귀식 자체를 얻기 위해 사용한다. 기울기와 절편 두 데이터가 얻어진다.

z=np.polyfit(x데이터, y데이터, 1)

7 자료형 변환[편집 | 원본 편집]

7.1 배열을 리스트로[편집 | 원본 편집]

리스트 = 배열.tolist

7.2 리스트를 배열로[편집 | 원본 편집]

배열 = np.array(리스트)

8 관련 에러[편집 | 원본 편집]

8.1 ValueError: Object arrays cannot be loaded when allow_pickle=False[편집 | 원본 편집]

보안을 위해 디폴트 옵션이 False가 되면서 생긴 오류. pip install numpy==1.16.1 으로 다운그래이드 하거나, 에러가 뜨는 함수에서 allow_pickle=True 옵션을 넣어준다.