Numpy

jupyter notebook을 사용하다보면

import numpy as np

이 코드는 안 쓴적이 없는 것 같다,,그만큼이나 자주 쓰는 넘파이. 오늘은 Numpy에 대해서 알아보자


정의

수치 데이터를 다루는 파이썬 패키지입니다. Numpy의 핵심이라고 불리는 다차원 행렬 자료구조인 ndarray를 통해 벡터 및 행렬을 사용하는 선형 대수 계산에서 주로 사용됩니다. Numpy는 편의성뿐만 아니라, 속도면에서도 순수 파이썬에 비해 압도적으로 빠르다는 장점이 있습니다.

설치 방법

pip install numpy
conda install -y numpy

를 통해 간단히 설치할 수 있다.

장점

  1. 일반 List에 비해 빠르고, 메모리를 효율적으로 사용한다.
  2. 반복문 없이 데이터 배열에 대한 처리를 지원하여 빠르고 편리하다.
  3. 선형대수와 관련된 다양한 기능을 제공한다.
  4. C, C++, 포트란 등의 언어와 통합이 가능하다

Numpy 레퍼런스

링크

np.array()

Numpy의 핵심은 ndarray입니다. np.array()는 리스트, 튜플, 배열로 부터 ndarray를 생성합니다. 파이썬 자료구조 중 하나인 리스트를 가지고 1차원 배열을 생성할 수 있다.

1차원 배열

# 1차원 배열
vec = np.array([1, 2, 3, 4, 5])
print(vec)

[1 2 3 4 5]

2차원 배열

# 2차원 배열
mat = np.array([[10, 20, 30], [ 60, 70, 80]]) 
print(mat)

[[10 20 30]
 [60 70 80]]

두 배열의 타입

print('vec의 타입 :',type(vec))
print('mat의 타입 :',type(mat))

vec의 타입 : <class 'numpy.ndarray'>
mat의 타입 : <class 'numpy.ndarray'>

vec의 타입 : <class 'numpy.ndarray'>
mat의 타입 : <class 'numpy.ndarray'>

print('vec의 축의 개수 :',vec.ndim) # 축의 개수 출력
print('vec의 크기(shape) :',vec.shape) # 크기 출력

ndarray의 초기화

np.zeros()는 배열의 모든 원소에 0을 삽입

zero_mat = np.zeros((2,3))
print(zero_mat)

np.arange()

np.arange(n)은 0부터 n-1까지의 값을 가지는 배열을 생성

range_vec = np.arange(10)
print(range_vec)

np.reshape()

내부 데이터는 변경하지 않으면서 배열의 구조를 바꿉니다. 0부터 29까지의 숫자를 생성하는 arange(30)을 수행한 후, 원소의 개수가 30개이므로 5행 6열의 행렬로 변경할 수 있다.

reshape_mat = np.array(np.arange(30)).reshape((5,6))
print(reshape_mat)
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]]

Numpy 슬라이싱

ndarray를 통해 만든 다차원 배열은 파이썬의 자료구조인 리스트처럼 슬라이싱(slicing) 기능을 지원합니다. 슬라이싱 기능을 사용하여 특정 행이나 열들의 원소들을 접근할 수 있다.

mat = np.array([[1, 2, 3], [4, 5, 6]])
print(mat)
[[1 2 3]
 [4 5 6]]

Numpy 정수 인덱싱(integer indexing)

mat = np.array([[1, 2], [4, 5], [7, 8]])
print(mat)
[[1 2]
 [4 5]
 [7 8]]

Numpy 연산

Numpy를 사용하면 배열간 연산을 손쉽게 수행할 수 있습니다. 덧셈, 뺄셈, 곱셈, 나눗셈을 위해서는 연산자 +, -, *, /를 사용할 수 있으며 또는 np.add(), np.subtract(), np.multiply(), np.divide()를 사용할 수 있다.

profile
문과생 데이터사이언티스트되기 프로젝트

0개의 댓글