Koo's.Co

[Numpy] ndarray 본문

DataScience

[Numpy] ndarray

kth321 2020. 8. 26. 04:34

Numpy의 근간은 ndarray 객체이다. 

리스트는 C의 배열과 다르게 각 요소들의 주소가 연속적이지 않다. 반면 Numpy의 ndarray는 각 요소들의 주소가 연속적이다. 이는 계산의 속도를 향상해 느린 연산 속도를 갖는 파이썬의 단점을 없애준다.

 

1. ndarray의 생성

1) array

import numpy as np

matA = [[1, 2, 3],[4, 5, 6], [7, 8, 9]]
matB = np.array(matA) #리스트로 생성
matC = np.array(((1, 2, 3), (4, 5, 6), (7, 8, 9))) #튜플로 생성

print(type(matA))
print(type(matB))
print(type(matC))

결과를 보면 알 수 있듯이 리스트와 튜플 모두 ndarray 객체를 반환한다. 이 때, 튜플을 입력해도 ndarray 객체를 반환하므로 반환된 객체의 요소는 변경될 수 있다

 

2) arange

arange는 array의 범위를 지정해 생성할 수 있다

순서대로 start, end, step이고 end는 포함되지 않는다

한 개의 매개 변수만 입력하면 start=0, step=1, 입력된 매개변수는 end값이 된다

 

 

 

import numpy as np

matD = np.arange(10)
matE = np.arange(0, 20, 2)

print('matD: ', matD)
print('matE: ', matE)

 

3) zeros

zeros는 리스트나 튜플을 입력받고 해당하는 행과 열을 갖는 array를 반환한다. 이때 array의 요소는 모두 0이다.

import numpy as np

matF = np.zeros((3,4))
print(matF)

 

2. shape

중첩 리스트를 사용할 경우, 리스트는 링크가 각 셀을 결합하고 있는 형태로 저장된다. 하지만 ndarray의 경우는 동적으로 객체의 구성을 변경할 수 없다.

따라서 ndarray의 경우는 배열의 크기를 바꿀 때 전체 요소를 삭제하고 다시 재생성해야 하는 단점이 있다.

 

1) shape

shape를 사용하면 해당 배열의 행과 열을 튜플로 반환한다

import numpy as np

matG = np.zeros((3,2))
print(matG.shape)

 

2) reshape

  • reshape 메서드를 사용하면 배열의 크기를 변환할 수 있다
  • 튜플을 입력값으로 받는다
  • 튜플 값 중 하나를 -1로 넣으면 나머지 하나는 자동으로 채워진다
  • 요소의 개수가 정수로 나누어 떨어지지 않으면 ValueError가 발생한다
import numpy as np

matH = np.arange(10)
print('before: ', matH)

matH = matH.reshape((2, 5))
print('After: ', matH)

reshape만 사용하면 객체의 요소는 변경되지 않고 size가 변경된 ndarray만 반환된다. 객체의 요소를 반환하려면 대입 연산자를 사용해야 한다

 

matH = matH.reshape((5, -1))
print('After: ', matH)

입력되는 튜플 값 중 하나를 -1로 넣으면 나머지 하나는 자동으로 입력된다

'DataScience' 카테고리의 다른 글

가우스 적분  (0) 2020.08.26
[Numpy] 뷰  (0) 2020.08.26
[Numpy] 배열과 행렬  (0) 2020.08.26
아나콘다 라이브러리 설치  (0) 2020.08.12
지수분포의 정의와 평균, 분산  (0) 2020.08.08
Comments