본문 바로가기
Coding/TIL & 배운것들

(Python) NumPy 란

by 코딩짜는 머글 2024. 9. 25.

NumPy는 파이썬에서 과학적 계산수치 연산을 빠르게 처리할 수 있도록 도와주는 라이브러리입니다. 배열(Array)이라는 자료 구조를 제공하고, 이를 이용해 벡터화된 연산을 수행할 수 있어서 대규모 데이터를 다루거나 복잡한 수학 계산을 할 때 자주 사용됩니다.

NumPy의 주요 기능과 특징

1. 다차원 배열 (ndarray)
   NumPy의 핵심은 ndarray라고 하는 다차원 배열입니다. 배열은 동일한 데이터 타입을 가진 원소들의 집합이며, NumPy 배열은 파이썬의 리스트(list)보다 빠르고 효율적입니다. 배열은 1차원, 2차원, 3차원 등 여러 차원으로 확장될 수 있습니다.
   
   - 1차원 배열 (벡터):

import numpy as np
arr = np.array([1, 2, 3, 4, 5]) # 1차원 배열 생성
print(arr)



     출력:

[1 2 3 4 5]




   - 2차원 배열 (행렬):

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



     출력:

[[1 2 3]
[4 5 6]]




2. 빠른 연산:
   NumPy는 배열을 사용하여 벡터화된 연산을 수행합니다. 즉, 배열의 각 요소에 대해 반복문을 사용하지 않고도 빠르게 계산을 수행할 수 있습니다. 이는 배열 간의 산술 연산이 요소별로 자동으로 적용되기 때문입니다.
   
   - 배열 간 연산:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b # 배열의 각 요소끼리 더해짐
print(c)



     출력:

[5 7 9]




   - 스칼라 연산:

d = a * 2 # 배열의 각 요소에 2를 곱함
print(d)



     출력:

[2 4 6]




3. 다양한 수학 함수:
   NumPy는 수학적 연산에 필요한 다양한 함수들을 제공합니다. 예를 들어, 배열의 합, 평균, 표준 편차 등을 쉽게 계산할 수 있습니다.
   
   - 합계:

np.sum(a) # 배열의 모든 요소의 합



   
   - 평균:

np.mean(a) # 배열의 평균



   
   - 표준 편차:

np.std(a) # 배열의 표준 편차




4. 배열 생성 함수:
   NumPy는 다양한 방법으로 배열을 쉽게 생성할 수 있는 함수들을 제공합니다.
   
   - 연속된 숫자의 배열 생성:

np.arange(0, 10, 2) # 0부터 10까지 2씩 증가하는 배열



     출력:

[0 2 4 6 8]



   
   - 0으로 채워진 배열:

np.zeros((3, 3)) # 3x3 크기의 0으로 채워진 배열



     출력:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]




   - 임의의 수로 채워진 배열:

np.random.rand(3, 3) # 3x3 크기의 0과 1 사이의 임의의 실수로 채워진 배열




5. 배열 인덱싱과 슬라이싱:
   NumPy 배열의 특정 요소를 참조하거나, 배열의 일부분을 선택할 수 있습니다. 이를 통해 데이터의 일부를 쉽게 추출하거나 수정할 수 있습니다.
   
   - 인덱싱:

arr = np.array([1, 2, 3, 4, 5])
print(arr[0]) # 첫 번째 요소 출력



     출력:

1



   
   - 슬라이싱:

print(arr[1:4]) # 인덱스 1에서 3까지의 요소 출력



     출력:

[2 3 4]




6. 다차원 배열의 인덱싱:
   2차원 이상의 배열에서는 행과 열을 기준으로 값을 참조하거나 슬라이싱할 수 있습니다.
   
   - 2차원 배열에서 특정 요소 접근:

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix[1, 2]) # 2번째 행, 3번째 열의 값 출력



     출력:

6




   - 2차원 배열 슬라이싱:

print(matrix[0:2, 1:3]) # 1, 2번째 행과 2, 3번째 열을 슬라이싱



     출력:

[[2 3]
 [5 6]]




7. 형태 변환:
   배열의 형태(Shape)를 쉽게 바꿀 수 있는 기능도 제공합니다.
   
   - 배열 형태 바꾸기:

arr = np.arange(6) # 0부터 5까지의 배열 생성
arr_reshaped = arr.reshape((2, 3)) # 2x3 형태로 변환
print(arr_reshaped)



     출력:

[[0 1 2]
 [3 4 5]]




NumPy의 장점

1. 빠른 연산: NumPy 배열은 파이썬 리스트에 비해 **메모리 효율적**이고, **벡터화된 연산**을 지원하여 훨씬 빠르게 동작합니다.
2. 다양한 수학 기능: 다양한 수학적 함수들을 제공하여 복잡한 계산을 쉽게 처리할 수 있습니다.
3. 대규모 데이터 처리: 대용량 데이터 처리에 최적화되어 있어, 데이터 과학, 머신러닝 등에서 많이 사용됩니다.
4. 다양한 파일 입출력: NumPy는 배열 데이터를 파일로 저장하거나 파일에서 읽어오는 기능도 제공합니다.

NumPy와 Pandas의 차이점

- NumPy는 주로 배열을 다루는 데 초점을 맞추고 있어 수치 연산이 빠르고 간편하지만, 구조화된 데이터를 처리하는 데는 한계가 있습니다.
- Pandas표 형태의 구조화된 데이터(예: 엑셀 파일, CSV 등)를 다루기에 적합하며, 데이터 전처리, 분석, 필터링 등에서 더 유리합니다.

요약
NumPy는 파이썬에서 배열 연산수치 계산을 빠르고 효율적으로 수행할 수 있도록 도와주는 기본적인 라이브러리입니다. 수학적 함수, 배열 연산, 슬라이싱, 다차원 배열을 쉽게 다룰 수 있어 데이터 과학수학적 분석에서 필수적인 도구입니다.

'Coding > TIL & 배운것들' 카테고리의 다른 글

인공지능을 위한 파이썬 3주차 & 4주차  (3) 2024.10.01
인공지능을 위한 파이썬 1주차 & 2주차  (2) 2024.09.30
(Python) pandas 란  (0) 2024.09.25
python이란  (1) 2024.09.23
웹개발 gpt 4주차  (1) 2024.09.19