코딩하는 해맑은 거북이

[Numpy] Numpy 배열 생성 방법 본문

Python/Numpy | Pandas

[Numpy] Numpy 배열 생성 방법

#CJE 2021. 1. 7.
해당 글은 Numpy 배열 생성 함수 일부에 대해 다룬다.
Numpy v1.19 Manual을 참고하였다.

 

1. Numpy 배열 생성

방법1. np.array(object [, dtype, copy, order, subok, ndmin])

배열을 생성한다.

- object : 배열 (object는 대괄호[ ] 또는 소괄호( )가 가능하다.)

- dtype : 데이터 타입

- copy : 기본값(true)이면 object가 복사, 아니면 복사본이 필요한 경우에만 만들어진다.

- order : 배열의 메모리 레이아웃을 지정한다. 옵션은 총 4가지로 {'K', 'A', 'C', 'F'}가 있다.

- subok : True이면 하위 클래스가 통과되고, 아니면 반환된 배열이 기본 클래스 배열(기본값)이 된다.

- ndmin : 최소 차원 수를 지정한다.

 

np.array([1, 2])	# 1차원 ( = np.array((1, 2)) )

np.array([		# 2차원
         [1, 2], 
         [3, 4]])

np.array([[		# 3차원
          [1, 2], 
          [3, 4]],
        
          [[5, 6], 
          [7, 8]]])
list1 = [1, 2, 3, 4, 5]
x = np.array(list1)		# 파이썬의 list를 직접 넣을 수도 있음
x

    array([1, 2, 3, 4, 5])

 

np.array([1, 2, 3, 4, 5], ndmin=2)

    array([[1, 2, 3, 4, 5]])

 

np.array([1, 2, 3, 4, 5], dtype=float)

    array([1., 2., 3., 4., 5.])

 

 

Numpy는 기본적으로 array간의 사칙연산을 지원한다.

u = np.array([1, 2])
v = np.array([3, 4])

u+v		# array([4, 6])

u-v		# array([-2, -2])

u*v		# array([3, 8])

u/v		# array([0.33333333, 0.5])

u%v		# array([1, 2])

 

방법2. np.arange([start,] stop[, step,][, dtype])

주어진 간격(시작~끝) 내에서 균일한 간격의 값을 가진 배열을 생성한다.

- start : 시작, 기본 시작값은 0 이다.

- stop : 끝, 이 값이 포함되지 않는다.

- step : 값 사이의 간격

- dtype : 데이터 타입

 

np.arange(10)	# 0부터 10미만까지의 배열 생성

    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

 

np.arange(1, 7)	# 1부터 7미만까지 간격 1만큼 증가하는 배열 생성

    array([1, 2, 3, 4, 5, 6])

 

np.arange(10, 20, 2)	# 10부터 20 미만까지 간격 2만큼 증가하는 배열 생성

    array([10, 12, 14, 16, 18])

 

np.arange(20, 10, -2)	# 감소로도 가능

    array([20, 18, 16, 14, 12])

 

 

방법3. np.zeros(shape[, dtype, order])

모든 값이 0으로 초기화된 배열을 생성한다.

- shape : 배열의 형태

- dtype : 데이터 타입

- order : 다차원 데이터를 행 우선('C', C 스타일) 또는 열 우선('F', Fortran 스타일) 순서로 메모리에 저장할지 여부, 옵션은 총 2가지로 { 'C', 'F' }가 있다. 기본값은 'C' 이다.

 

np.zeros(5)

    array([0., 0., 0., 0., 0.])

 

np.zeros([5, 1])	# 5행 1열 배열 생성 ( = np.zeros((5, 1)) )

    array([[0.],

            [0.],

            [0.],

            [0.],

            [0.]])

 

np.zeros([1, 5])	# 1행 5열의 배열 생성

    array([[0., 0., 0., 0., 0.]])

   

 

 

방법4. np.ones(shape[, dtype, order])

모든 값이 1로 초기화된 배열을 생성한다.

- shape : 배열의 형태

- dtype : 데이터 타입

- order : 다차원 데이터를 행 우선('C', C 스타일) 또는 열 우선('F', Fortran 스타일) 순서로 메모리에 저장할지 여부, 옵션은 총 2가지로 { 'C', 'F' }가 있다. 기본값은 'C' 이다.

 

np.ones(5)

    array([1., 1., 1., 1., 1.])

 

np.ones([5, 1]) 	# 5행 1열 배열 생성

    array([[1.],

            [1.],

            [1.],

            [1.],

            [1.]])

 

np.ones([1, 5])		# 1행 5열 배열 생성

    array([[1., 1., 1., 1., 1.]])

 

 

방법5. np.full(shape, fill_value[, dtype, order])

사용자가 지정한 값으로 채워진 배열을 생성한다.

- shape : 배열의 형태

- fill_value : 채울 값

    - dtype : 데이터 타입

    - order : 다차원 데이터를 행 우선('C', C 스타일) 또는 열 우선('F', Fortran 스타일) 순서로 메모리에 저장할지 여부, 옵션은 총 2가지로 { 'C', 'F' }가 있다. 기본값은 'C' 이다.

 

np.full((1, 5), 10)	# 모든 값이 10으로 채워진 1행 5열의 배열 생성

    array([[10, 10, 10, 10, 10]])

 

np.full((2, 2), [1, 2])

    array([[1, 2],

            [1, 2]])

 

 

방법6. np.empty(shape[, dtype, order])

초기화 되지 않은 배열을 생성한다. 메모리 상태에 따라 다른 값이 들어간다.

- shape : 배열의 형태

- dtype : 데이터 타입

- order : 다차원 데이터를 행 우선('C', C 스타일) 또는 열 우선('F', Fortran 스타일) 순서로 메모리에 저장할지 여부, 옵션은 총 2가지로 { 'C', 'F' }가 있다. 기본값은 'C' 이다.

 

np.empty((1, 7))

    array([[1.47160101e-316, 1.38338381e-322, 9.11571735e-304, 3.44620186e-085, 3.63460077e+185, 1.57230356e+108, 9.11568534e-304]])

 

 

방법7. np.diag(v [, k])

대각선을 추출하거나 대각선에 값이 채워진 배열(대각행렬)을 생성한다.

- v : 대각선에 들어갈 값

- k : 치우친 정도

np.diag([1, 2, 3])

    [[1 0 0]
     [0 2 0]
     [0 0 3]]

np.diag([1, 2, 3], k=1)

    [[0 1 0 0]
     [0 0 2 0]
     [0 0 0 3]
     [0 0 0 0]]

 

 

 

방법8. np.identity(n[, dtype]) 혹은 np.eye(n[, k, dtype, order])

2차원 nxn 정방단위행렬을 생성한다.

- n : nxn의 행 또는 열의 수

- dtype : 데이터 타입

- k : 치우친 정도

- order : 다차원 데이터를 행 우선('C', C 스타일) 또는 열 우선('F', Fortran 스타일) 순서로 메모리에 저장할지 여부, 옵션은 총 2가지로 { 'C', 'F' }가 있다. 기본값은 'C' 이다.

np.identity(3)

    [[1. 0. 0.]
     [0. 1. 0.]
     [0. 0. 1.]]

np.eye(3)

    [[1. 0. 0.]
     [0. 1. 0.]
     [0. 0. 1.]]

 

 

 

 

[참고문헌]

좀더 자세한 내용은 아래 링크를 참고하시면 될 것 같습니다.

이는 Numpy v1.19 Manual이고 상위 버전을 사용하고 계신다면 v1.21 링크를 참고하시면 됩니다.

- Numpy v1.19 Manual

numpy.org/doc/stable/reference/routines.array-creation.html

 

Array creation routines — NumPy v1.19 Manual

Note numpy.rec is the preferred alias for numpy.core.records.

numpy.org

- Numpy v1.21 Manual

numpy.org/devdocs/reference/routines.array-creation.html

 

Array creation routines — NumPy v1.21.dev0 Manual

Note numpy.rec is the preferred alias for numpy.core.records.

numpy.org

 

Comments