zenn.skin 무료버전 배포중!
자세히보기

DataScience

[Numpy] ndarray

koosco! 2020. 8. 26. 04:34

Numpy의 근간은 ndarray 객체이다. 

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

 

목차
1.1. ndarray의 생성
1.1.1) array
1.2.2) arange
1.3.3) zeros
2.2. shape
2.1.1) shape
2.2.2) reshape

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

'DataScience'의 다른글

  • 현재글 [Numpy] ndarray

관련글