Programming

; develop a program

Back-End/Python

[Python] NumPy(넘파이)

Clloud_ 2023. 6. 15. 08:07
반응형

이번 포스팅에서는 파이썬에서 과학적 계산을 위한 핵심 라이브러리인 NumPy(넘파이)에 대하여 공부를 해보고자 한다.

 


NumPy란

NumPy는 다차원 배열 객체와 이러한 배열을 다루기 위한 다양한 함수와 도구를 제공하여 고성능의 수치 연산을 지원한다.
NumPy의 핵심 기능은 ndarray라고 불리는 다차원 배열 객체이다.

 

NumPy 배열은 동일한 타입의 원소들로 구성된 격자 형태의 값들을 가지며, 이 배열의 차원을 축(axis)이라고 부른다.
기본적으로 메모리에서 연속된 공간을 차지하며, C나 Fortran과 같은 저수준 언어로 구현된 라이브러리들과의 통합을 용이하게 한다.

 

 

NumPy 배열은 파이썬의 내장 리스트와 비교해 다음과 같은 장점을 갖는다.

  • 빠른 속도
    NumPy는 내부적으로 벡터화 연산을 수행하므로 반복문을 사용하는 파이썬 리스트에 비해 더 빠른 계산이 가능하다.

  • 메모리 효율성
    NumPy 배열은 C 언어와의 통합을 통해 메모리를 효율적으로 사용한다.

  • 강력한 연산 기능
    NumPy는 다양한 수학적 연산, 선형 대수, 푸리에 변환 등을 지원하는 다양한 함수와 연산자를 제공하다.

 

NumPy 배열은 다음과 같이 생성할 수 있다.

import numpy as np

# 1차원 배열 생성
arr1 = np.array([1, 2, 3, 4, 5])

# 2차원 배열 생성
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

# 3차원 배열 생성
arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

 


배열 속성

NumPy 배열은 다음과 같은 다양한 속성을 갖고 있다.

 

shape: 배열의 차원을 나타내는 튜플(tuple)

print(arr2.shape)  # (2, 3)
  • 예를 들어, (3,)는 1차원 배열이고 길이가 3을 갖는다는 의미이며, (2, 3)은 2차원 배열이고 2개의 행과 3개의 열을 갖는다는 의미이다.

 

dtype: 배열의 데이터 타입을 나타내는 객체

print(arr1.dtype)  # int64
  • NumPy는 다양한 데이터 타입을 지원하며, 각 원소는 동일한 타입을 가져야 한다.

 

ndim: 배열의 차원 수

print(arr2.ndim)  # 2

 

size: 배열에 있는 원소의 총 개수

print(arr3.size)  # 8

 


배열 인덱싱과 슬라이싱

NumPy 배열은 인덱싱과 슬라이싱을 통해 배열의 요소에 접근할 수 있다.

 

인덱싱: 배열에서 특정 위치의 단일 요소에 접근하는 것

print(arr1[0])  # 1
print(arr2[1, 2])  # 6

 

슬라이싱: 배열에서 범위를 지정하여 부분 배열을 추출하는 것

print(arr1[1:3])  # [2, 3]
print(arr2[:, 1:3])  # [[2, 3], [5, 6]]

 


배열 연산

NumPy 배열은 다양한 수학적 연산과 함수를 적용할 수 있다.
배열 간의 연산은 원소별(element-wise)로 수행된다.

 

기본 연산

arr_sum = arr1 + arr2  # 배열 덧셈
arr_prod = arr1 * arr2  # 배열 곱셈

 

유니버설 함수(Universal functions)

arr_squared = np.square(arr1)  # 배열의 모든 요소에 대한 제곱
arr_sqrt = np.sqrt(arr2)  # 배열의 모든 요소에 대한 제곱근
arr_exp = np.exp(arr3)  # 배열의 모든 요소에 대한 지수 함수 계산
  • NumPy는 다양한 수학 함수와 연산을 제공한다.
  • 이러한 함수는 배열의 모든 요소에 대해 자동으로 적용된다.

 


브로드캐스팅(Broadcasting)

NumPy는 브로드캐스팅이라는 기능을 제공하여 배열 간의 연산을 자동으로 수행할 수 있게 한다.
브로드캐스팅은 크기가 다른 두 배열 간의 연산을 가능하게 하기 위해 작은 배열을 자동으로 확장하는 기능이다.

 

arr4 = np.array([1, 2, 3])
arr5 = np.array([[4], [5], [6]])

arr_broadcast = arr4 + arr5
# 결과: [[5, 6, 7],
#        [6, 7, 8],
#        [7, 8, 9]]
  • 브로드캐스팅을 통해 배열 간의 연산을 보다 간결하게 수행할 수 있다.

 


반응형

'Back-End > Python' 카테고리의 다른 글

[Python] enumerate 함수  (0) 2023.06.17
[Python] strptime, strftime  (0) 2023.06.16
[Python] permutations  (0) 2023.06.07
[Python] pass와 continue 차이점  (0) 2023.06.03
[Python] load( ) & dumps( )  (0) 2023.06.02