차밍이

[NumPy] 넘파이 기초 공부하기 #1 np.array, ndim, shape, dtype 본문

파이썬/기본 문법 정리

[NumPy] 넘파이 기초 공부하기 #1 np.array, ndim, shape, dtype

2020. 1. 26. 21:32
반응형

넘파이 기본 내용

넘파이(NumPy)의 주요 대상은 동종의 다차원 배열입니다. 즉 넘파이의 각 요소들은 같은 데이터 타입을 가지고 있으며, 여러 차원의 배열 형태로 데이터를 가지고 있습니다.

Python에서 넘파이를 사용하기 위해서는 넘파이 라이브러리를 불러오는 것으로 사용할 수 있습니다.

# Numpy 넘파이 라이브러리 불러오기
import numpy as np

numpy 라이브러리에 있는 모든 함수를 사용할 때, 계속해서 numpy를 모두 써주면 귀찮기 때문에 as np를 붙여서 간단하게 줄여서 np만을 써서 numpy를 대신하는 것입니다.

 

배열 선언

a = [1,2,3,4,5] # List 
type(a)
>>> list

b = np.array([1,2,3,4,5]) # Array 
type(b)
>>> numpy.ndarray

c = np.array(1,2,3,4,5) # X 옳지 않은 방법
>>> ValueError

List와 Array는 다르다는 것을 이전에 설명하였습니다.

numpy를 통해서 배열을 선언하기 위해서는 np.array()를 사용해서 선언할 수 있습니다.

c의 경우 에러가 발생합니다. 배열을 선언할 때에는 꼭 대괄호 [ ] 를 사용해야 합니다.

2020/01/22 - [파이썬] - [NumPy] 넘파이란? List와 Array의 차이점, 넘파이 계산이 빠른 이유

 

[NumPy] 넘파이란? List와 Array의 차이점, 넘파이 계산이 빠른이유

• Numpy 란? NumPy는 Python의 과학 컴퓨팅을 위한 기본 패키지로 Python 라이브러리를 import하여 사용 가능합니다. • NumPy 배열과 표준 Python 시퀀스 간의 차이점 List와 Array의 차이점 일반적으..

chancoding.tistory.com

배열의 차원

넘파이의 각 차원은 axes(축)으로 불립니다.

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

위 배열은 1차원 배열이며 1차원 배열의 길이는 5입니다.

np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>> array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])

위 배열은 2차원 배열입니다. 첫 번째 차원은 [1,2,3,4,5]으로 길이가 5 입니다.

두 번째 차원은 [6,7,8,9,10]으로 구성되어 있으며 길이가 5 입니다.

여기에 계속해서 차원을 추가해나갈 수 있겠지요?

따라서 1, 2, 3, ... n 개의 차원으로 계속해서 많은 차원의 배열을 선언할 수 있습니다.

나중에 딥러닝/머신러닝을 진행하면 각 차원이 너무 많아져서 계산이 느려지는 문제를 직면하게 됩니다.

 

넘파이 객체

넘파이의 class는 ndarray이며 일반적으로는 그냥 array 또는 배열이라고 얘기합니다.

ndarray 객체의 속성은 다음과 같습니다.

  • ndarray.ndim
    배열의 차원 수 or 배열의 축 수
  • b = np.array([1,2,3,4,5]) b.ndim >>> 1 c = np.array([[ 1., 0., 0.], [ 0., 1., 2.]]) c.ndim >>> 2
  • ndarray.shape
    배열 각 차원의 크기를 튜플 형태로 표현합니다. n행과 m열의 행렬의 경우 (n,m) 형태의 튜플로 나타냅니다.배열 b는 1차원 길이가 5인 배열이므로 shape를 보면 (5, )입니다.배열 d는 각 차원의 길이가 3인 배열이므로 (4, 3)입니다. 4행 3열로 이루어진 배열이라고 할 수 있습니다.
  • 어떤 느낌인지 아시겠죠~
  • 배열 c는 2차원이며 각 차원의 길이가 3인 배열이므로 (2, 3)입니다. 2행 3열로 이루어졌다고 볼 수 있습니다.
  • b = np.array([1,2,3,4,5]) c = np.array([[ 1., 0., 0.], [ 0., 1., 2.]]) d = np.array([[ 1., 0., 0.], [ 0., 1., 2.], [ 3., 4., 7.], [ 3., 0., 1.]]) b.shape >>> (5,) c.shape >>> (2,3) d.shape >>> (4,3)
  • nparray.dtype
    b = np.array([1, 2, 3, 4, 5])
    c = np.array([[ 1., 0., 0.],
                   [ 0., 1., 2.]])
    
    b.dtype
    >>> dtype('int32')
    c.dtype
    >> dtype('float64')
    배열 b는 정수형 요소들로 이루어져 있으므로 data의 type은 int32으로 출력됩니다.
  • 배열 c는 실수형 데이터 타입으로 이루어져 있어 data의 type은 float64으로 출력됩니다.
  • 배열의 원소의 종류를 알 수 있습니다. 기본적으로 넘파이의 원소들은 모두 같은 데이터 타입을 가지고 있습니다. numpy.int32, numpy.int16, numpy.float64등이 있습니다.

ndarray.itemsize와 ndarray.data는 좀 더 복잡하고 어려운 내용이므로 가볍게 읽어만 보셔도 충분할 것 같습니다.

  • ndarray.itemsize.
    배열의 각 요소의 바이트 단위로 크기를 알 수 있습니다. 예를 들어 float64 형식의 요소 배열은 8(=64/8)의 항목 크기를 가지며, complex32 형식 중 하나는 4(=32/8)의 항목 크기를 가진다. 이것은 ndarray.dtype.itemsize와 같다.
  • ndarray.data.
    배열의 데이터가 메모리의 어느 위치에 저장되어있는지 알려줍니다. 저장된 메모리의 위치를 반환합니다.

지금까지 NumPy 넘파이의 아주 기초적인 내용들을 알아보았습니다.

다음번에는 numpy의 함수들에 대해서 알아보도록 하겠습니다.

반응형

관련된 글 보기

Comments