넘파이(Numpy)란?
파이썬을 사용하다 보면 데이터 처리가 필요한 경우가 많다. 넘파이(Numpy)는 파이썬에서 고성능의 수치 계산을 위한 라이브러리로, 다차원 배열을 다루는 데 매우 유용하고 강력한 도구이다. 넘파이의 기본 개념과 배열을 이해하는 데 필요한 핵심 내용을 간단한 예제와 함께 짚고 넘어가자. 물론 파이썬에서 기본으로 지원하는 리스트가 있지만, 넘파이에서 지원하는 배열이 훨씬 더 빠르고 효율적이다. 이러한 장점들 때문에 데이터 분석, 과학적 계산, 머신러닝 등 다양한 분야에서 넘파이가 많이 활용된다.
넘파이의 ndarray(N-dimensional array)는 다차원 배열을 표현하는 핵심 자료구조로, 파이썬 리스트와 비슷하지만 훨씬 많은 기능과 성능을 제공한다. 넘파이 배열의 특징을 정리해 보면 다음과 같다:
- 동일한 타입의 요소들로 구성됨
- 인덱스와 슬라이싱을 이용하여 요소들에 쉽게 접근 가능
- 백터, 행렬 등 다양한 다차원 데이터를 효율적으로 다룰 수 있음
- 많은 수치 계산 라이브러리에서 사용됨
넘파이 배열의 기본 생성
그렇다면 넘파이를 이용한 배열은 어떻게 생성하는지 알아보자. 간단하다. np.array()의 인자로 파이썬 리스트를 넘겨 주면 된다.
import numpy as np
# 1차원 배열 생성
arr1d = np.array([1, 2, 3, 4, 5])
print(arr1d) # [1 2 3 4 5]
# 2차원 배열 생성
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d)
"""
[[1 2 3]
[4 5 6]
[7 8 9]]
"""
위 코드에서 arr1d는 1차원 배열이고, arr2d는 2차원 배열이다. 인자로 어떤 리스트를 넘겨주느냐에 따라 차원이 결정되는 것이다.
배열의 형태와 크기 확인
n개의 행과 m개의 열이 있는 행렬의 형태(shape)는 (n, m)이다. 배열의 크기(size)는 배열 안의 요소들의 개수를 나타낸다. 배열의 형태와 크기를 확인하면 해당 배열이 몇 차원인지, 각 차원에 몇 개의 요소가 있는지 알 수 있다.
print(arr1d.shape) # 출력: (5,) - 1차원 배열이며, 5개의 요소를 가짐
print(arr2d.shape) # 출력: (3, 3) - 3x3 행렬
print(arr2d.size) # 출력: 9 - 요소 개수가 9개
- shape: 배열의 각 차원의 크기를 튜플 형태로 반환
- size: 배열의 전체 요소 개수를 반환
배열의 요소에 접근
넘파이 배열은 인덱스를 사용하여 특정 요소에 쉽게 접근할 수 있다. 파이썬 리스트와 마찬가지로 인덱싱과 슬라이싱을 통해 배열의 원하는 부분을 선택할 수 있다.
# 인덱싱
print(arr1d[0]) # 출력: 1
# 슬라이싱
print(arr1d[1:4]) # 출력: [2 3 4]
print(arr2d[1, 1]) # 출력: 5
print(arr2d[:, 1]) # 출력: [2 5 8]
- arr1d[0]: 1차원 배열의 첫 번째 요소를 반환
- arr1d[1:4]: 두 번째부터 네 번째 요소까지를 슬라이스하여 반환
- arr2d[1, 1]: 2차원 배열의 두 번째 행, 두 번째 열의 요소를 반환
- arr2d[:, 1]: 모든 행에서 두 번째 열의 요소를 선택하여 반환
배열의 연산
넘파이 배열을 활용하면 간편하게 배열의 연산이 가능하다. 넘파이의 큰 강점이다! 넘파이 배열에 산술 연산이나 어떤 함수를 적용하면 배열의 각 요소에 어떤 연산이나 함수가 적용된다. 파이썬의 기본 리스트를 사용한다면 반복문을 사용해야 할 연산을 넘파이의 배열을 이용하면 직관적으로 수행할 수 있다. 아래 예시를 통해 살펴보자.
# 배열 간 연산
arr = np.array([1, 2, 3])
result = arr * 2 # 배열의 각 요소에 2를 곱한 새로운 배열을 생성
print(result) # [2 4 6]
# 배열의 브로드캐스팅
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
result = matrix + 10 # 행렬의 모든 요소에 10을 더한 새로운 행렬을 생성
print(result)
"""
[[11 12 13]
[14 15 16]
[17 18 19]]
"""
브로드캐스팅을 활용한 배열 간 연산
넘파이의 브로드캐스팅(broadcasting)은 다른 형태(shape)를 가진 배열들 간에도 산술 연산을 수행할 수 있게 해 준다. 예를 들어, 2차원 배열과 1차원 배열을 더할 때 유용하게 사용된다.
# 두 배열 생성
A = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
B = np.array([10, 20, 30, 40])
# 브로드캐스팅을 이용한 배열 간 연산
result = A + B
print(result)
"""
[[11 22 33 44]
[15 26 37 48]
[19 30 41 52]]
"""
위 예제에서 배열 A는 3x4 행렬이고, 배열 B는 1x4 배열이다. 브로드캐스팅을 통하면 B가 A의 각 행에 자동으로 확장되어 더해진다.
정리
넘파이는 파이썬에서 데이터 과학과 수치 계산을 위한 필수 도구 중 하나이다. 넘파이를 활용하면 복잡한 데이터 처리를 간편하게 수행할 수 있으니, 다양한 예제를 통해 더 깊이 있는 사용법을 익혀보자.
'Language > Python' 카테고리의 다른 글
[Python] 넘파이를 활용한 다양한 통계 처리 함수 알아보기 (0) | 2025.02.04 |
---|---|
[Python] numpy.random으로 무작위 데이터 생성하기 (0) | 2025.01.31 |
[Python] 파이썬을 배우면 무엇을 할 수 있을까? 파이썬 대표 라이브러리 알아보기 (6) | 2025.01.24 |
[Python] 파이썬에서 자주 사용하는 내장 함수 정리 (1) | 2025.01.23 |
[Python] 파이썬 연산자 오버로딩 이해하기 (0) | 2025.01.22 |