코딩하는 해맑은 거북이

[Numpy] Numpy란, Numpy 특징, ndarray 본문

Python/Numpy | Pandas

[Numpy] Numpy란, Numpy 특징, ndarray

#CJE 2022. 12. 27.
본 게시물의 내용은 'Numpy(부스트캠프 AI Tech)' 강의를 듣고 작성하였다.

Numpy, Numerical Python

- 파이썬의 고성능 과학 계산용 패키지

- Matrix와 Vector와 같은 Array 연산의 사실상의 표준

 

Numpy의 특징

- 일반 List에 비해 빠르고, 메모리 효율적

- 반복문 없이 데이터 배열에 대한 처리를 지원함

- 선형대수와 관련된 다양한 기능을 제공함

- C, C++, 포트란 등의 언어와 통합 가능

 

ndarray

import numpy as np

- numpy의 호출 방법

- 일반적으로 numpy는 np라는 alias(별칭) 이용해서 호출함 → 특별한 이유는 없음, 세계적인 약속 같은 것

 

test_array = np.array([1, 4, 5, 8], float)
print(test_array)
type(test_array[3])
type(test_array)

    [1. 4. 5. 8.]
    numpy.float64

    numpy.ndarray

 

- numpy는 np.array 함수를 활용하여 배열을 생성함 → 이렇게 생성된 배열을 ndarray 객체라 부른다.

- numpy는 하나의 데이터 type만 배열에 넣을 수 있음

- list와 가장 큰 차이점 → dynamic typing not supported

- C의 array를 사용하여 배열을 생성함

 

cf) Numpy Array vs Python List

numpy array는 메모리의 어떤 공간에 데이터의 값들이 차례대로 저장된다.

그러나 Python list는 메모리의 주소값이 리스트에 차례대로 저장된다.

즉, 데이터의 값을 찾기 위해서는 한단계 더 가야한다.

그래서 numpy array는 메모리의 접근성이 좋고, 메모리의 크기가 일정하기 때문에 연산이 유용하다.

a = [1, 2, 3, 4, 5]
b = [5, 4, 3, 2, 1]
a[0] is b[-1]

    True

a = np.array(a)
b = np.array(b)
a[0] is b[-1]

    False

 

 

 


 

test_array = np.array([1, 4, 5, "8"], float)
print(test_array)
print(type(test_array[3]))
print(test_array.dtype)
print(test_array.shape)

    [1. 4. 5. 8.]

    <class 'numpy.float64'>

    float64

    (4,)

 

- shape : numpy array의 dimension 구성(array의 크기, 형태 등에 대한 정보)을 반환함

  * ndim - number of dimensions = rank

  * size - data의 개수 = element 갯수

test_tensor = [[[1,2,3,4], [1,2,5,8]], [[1,2,3,4], [1,2,5,8]]]
np.array(test_tensor).shape

    (2, 2, 4)

np.array(test_tensor).ndim

     3

np.array(test_tensor).size

     16

 

- dtype : numpy array의 데이터 type을 반환함

  ndarray의 single element가 가지는 data type

  각 element가 차지하는 memory의 크기가 결정됨

  C의 data type과 compatible(호환 가능)

 

- nbytes - ndarray object의 메모리 크기를 반환함

np.array([[1, 2, 3], [4.5, "5", "6"]], dtype=np.float32).nbytes
# 32 bits = 4 bytes >> 6 * 4 bytes

     24

np.array([[1, 2, 3], [4.5, "5", "6"]], dtype=np.int8).nbytes
# 8 bits = 1 bytes >> 6 * 1 bytes

     6

np.array([[1, 2, 3], [4.5, "5", "6"]], dtype=np.float64).nbytes
# 64 bits = 8 bytes >> 6 * 8 bytes

     48

 

 

 

Comments