Skip to content
튜토리얼
NumPy
Python NumPy 배열 튜토리얼: 배열 생성, 조작 및 시각화

Python NumPy 배열 튜토리얼: 배열 생성, 조작 및 시각화

큰 데이터 세트를 작업하거나 복잡한 수학 연산을 수행해야하는 경우, NumPy는 데이터 과학 도구 상에서 필수적인 도구입니다. NumPy를 사용하면 다차원 배열을 효율적으로 생성하고 조작할 수 있으므로, 이는 과학적 컴퓨팅 및 머신 러닝을 위한 중요한 라이브러리입니다.

이 튜토리얼에서는 파이썬에서 NumPy를 시작하는 방법을 알려드리겠습니다. 설치, 브로드캐스팅, 인덱싱, 슬라이싱 및 시각화에 대해 설명하며 성능 최적화 및 에러 해결에 대한 팁도 제공합니다. 시작해봅시다!

파이썬에서 빠르게 데이터 시각화를 생성하려면?

PyGWalker는 주피터 노트북 기반 환경에서 데이터 분석 및 시각화 작업을 속도를 높이는 데 도움을 주는 오픈 소스 파이썬 프로젝트입니다.

PyGWalker (opens in a new tab)는 판다스 데이터프레임(또는 폴라 데이터프레임)을 변수를 드래그 앤 드롭하여 그래프를 쉽게 생성할 수 있는 시각적인 사용자 인터페이스(UI)로 변환합니다. 다음 코드를 사용하면 됩니다:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

지금 바로 온라인 노트북에서 PyGWalker를 실행할 수 있습니다:

그리고 GitHub에서 ⭐️을 주시기 바랍니다!

Kaggle 노트북에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)GitHub에서 PyGWalker에 ⭐️ 주기 (opens in a new tab)
Kaggle 노트북에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)GitHub에서 PyGWalker에 ⭐️ 주기 (opens in a new tab)

NumPy란 무엇이며 데이터 과학에서 왜 중요한가요?

NumPy는 파이썬에서 수치 연산을 위한 라이브러리입니다. 고성능 다차원 배열 객체와 이러한 배열을 다루는 도구를 제공합니다. NumPy 배열은 수학 연산을 한 번에 전체 배열에 대해 수행할 수 있으므로, 전통적인 파이썬 리스트보다 훨씬 빠릅니다.

NumPy는 대량의 데이터 세트 및 숫자 연산의 효율적인 조작을 가능하게 하기 때문에 데이터 과학에서 필수적입니다. NumPy 배열은 머신 러닝 알고리즘, 이미지 처리 및 과학적 시뮬레이션에서 적극적으로 사용됩니다.

컴퓨터에 NumPy를 설치하는 방법은 무엇인가요?

NumPy를 시작하기 전에 컴퓨터에 설치되어 있는지 확인해 보겠습니다. NumPy는 파이썬용 패키지 설치 도구인 pip를 사용하여 설치할 수 있습니다.

pip install numpy

NumPy가 설치되면 다음을 사용하여 파이썬 환경에서 가져올 수 있습니다:

import numpy as np

NumPy 배열 연산

먼저 NumPy 배열을 생성해 보겠습니다. numpy.random.rand() 함수를 사용하여 랜덤한 숫자로 채워진 2차원 배열 또는 행렬을 생성하겠습니다.

import numpy as np
 
# 0과 1 사이의 랜덤한 숫자로 3x3 배열 생성
arr = np.random.rand(3, 3)
 
print(arr)

다음과 같은 결과가 출력됩니다:

array([[0.5488135 , 0.71518937, 0.60276338],
       [0.54488318, 0.4236548 , 0.64589411],
       [0.43758721, 0.891773  , 0.96366276]])

이제 NumPy 배열에 대해 몇 가지 연산을 수행해 보겠습니다. NumPy는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 많은 수학적 연산을 지원합니다.

# 배열의 모든 요소에 10을 더하기
arr = arr + 10
 
# 배열의 모든 요소에 2를 곱하기
arr = arr * 2
 
# 배열의 모든 요소를 3으로 나누기
arr = arr / 3
 
print(arr)

다음과 같은 결과가 출력됩니다:

array([[6.22202665, 6.61503667, 6.47785626],
       [6.6808859 , 6.49408332, 6.75637531],
       [6.1817823 , 7.63341086, 7.92046462]])

NumPy 배열 인덱싱

NumPy 배열의 인덱싱은 파이썬 리스트의 인덱싱과 유사합니다. 대괄호를 사용하여 배열의 요소에 접근하고 인덱스를 지정합니다.

import numpy as np
 
# 0부터 15까지의 숫자로 이루어진 2차원 배열 생성
arr = np.arange(16).reshape((4,4))
 
# 전체 배열 출력
print(arr)
 
# 2행 3열의 요소 출력
print(arr[2, 3])
 
# 배열의 첫 번째 행 출력
print(arr[0, :])
 
# 배열의 마지막 열 출력
print(arr[:, 3])
 
# 1행부터 3행, 1열부터 3열까지의 부분 배열 출력
print(arr[1:4, 1:4])

다음과 같은 결과가 출력됩니다:

array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

11

[0 1 2 3]

[ 3  7 11 15]

[[ 5  6  7]
 [ 9 10 11]
 [13 14 15]]

NumPy vs. pandas

NumPy와 pandas는 모두 데이터 과학에서 필수적인 라이브러리이지만, 다른 목적을 가지고 있습니다. NumPy는 수치 계산 및 배열 조작에 사용되고, pandas는 데이터 조작 및 분석에 사용됩니다. NumPy는 대규모 배열의 숫자 연산에 더 효율적이며, 판다스는 탭ular 데이터 처리에 능숙합니다. NumPy는 주로 머신러닝 알고리즘에 데이터를 전처리하는 데 사용되며, 판다스는 데이터 주도 형식의 워크플로우에서 데이터셋을 다루는 데 사용됩니다.

NumPy 데이터 유형

NumPy 배열은 정수, 부동 소수점 숫자, 불리언을 포함한 다양한 데이터 유형을 가질 수 있습니다. dtype 매개변수를 사용하여 배열을 생성할 때 데이터 유형을 지정할 수 있습니다.

import numpy as np
 
arr_int = np.array([1, 2, 3])   # 정수 배열
arr_float = np.array([1.0, 2.0, 3.0])   # 부동 소수점 배열
arr_bool = np.array([True, False, True])   # 불리언 배열
 
# 배열의 데이터 유형 출력
print(arr_int.dtype)
print(arr_float.dtype)
print(arr_bool.dtype)

이것은 다음과 같이 출력됩니다:

int64
float64
bool

NumPy 브로드캐스팅

브로드캐스팅은 NumPy에서 가능한 강력한 기능으로 다른 모양의 배열에 대한 수학 연산을 수행할 수 있게 합니다. 두 배열에 대한 연산을 수행할 때 NumPy는 원소별로 배열의 모양을 비교하고 작은 배열을 큰 배열에 맞춰서 브로드캐스트합니다.

import numpy as np
 
# 1로 채워진 3x3 배열 생성
arr = np.ones((3, 3))
 
# 배열의 모든 요소에 2를 더함
arr = arr + 2
 
# 배열의 짝수인 요소를 3으로 곱함
arr[arr % 2 == 0] *= 3
 
print(arr)

이것은 다음과 같이 출력됩니다:

array([[ 9.,  3.,  9.],
       [ 3.,  9.,  3.],
       [ 9.,  3.,  9.]])

머신러닝에서 NumPy 배열 사용 방법

NumPy 배열은 머신러닝 알고리즘에서 중요한 역할을 합니다. 머신러닝 모델은 배열 형태로 데이터를 입력받고, NumPy는 이 데이터를 전처리하고 조작하는 다양한 도구를 제공합니다.

예를 들어, 이미지 데이터를 처리할 때 NumPy 배열은 이미지의 픽셀을 다차원 배열로 표현할 수 있습니다. 이 배열은 학습과 예측을 위해 머신러닝 모델에 입력될 수 있습니다.

NumPy는 또한 데이터를 학습 및 테스트 부분집합으로 분할하거나 데이터를 스케일링하고 범주형 변수를 인코딩하는 함수를 제공합니다.

효율적인 NumPy 배열 조작 기술

NumPy는 효율적인 배열 조작을 위한 다양한 함수와 기술을 제공합니다. 여기에는 다음과 같은 몇 가지 예시가 있습니다:

  • 배열 재구성: reshape 함수를 사용하여 배열의 모양을 특정 작업이나 알고리즘의 요구에 맞게 바꿀 수 있습니다.

  • 배열 적층: hstack, vstack, dstack 함수를 사용하여 배열을 가로, 세로, 깊이 방향으로 적층합니다.

  • 배열 전치: transpose 함수를 사용하여 2차원 배열의 행과 열을 교환합니다.

  • 배열 정렬: sort 함수를 사용하여 배열의 요소를 오름차순이나 내림차순으로 정렬합니다.

NumPy 배열 오류 해결 팁

NumPy 배열 작업은 특히 대규모 데이터셋을 다룰 때 도전적일 수 있습니다. 일반적인 NumPy 배열 오류의 해결을 위한 몇 가지 팁은 다음과 같습니다:

  • 배열의 모양 확인: 수행 중인 작업에 대해 올바른 배열 모양을 가지는지 확인하세요.

  • 배열을 올바른 데이터 유형으로 변환: 수행 중인 수학 연산에 대해 배열이 올바른 데이터 유형을 가지는지 확인하세요.

  • 브로드캐스팅을 올바르게 사용: 브로드캐스팅은 강력할 수 있지만 예상치 못한 결과로 이어질 수도 있습니다. 연산을 수행하기 전에 브로드캐스트된 배열의 차원을 다시 확인하세요.

  • NaN 또는 Infinity 값 확인: NaN(숫자가 아님) 및 Infinity 값은 수학 연산에서 오류를 발생시킬 수 있습니다. 연산을 수행하기 전에 배열을 이러한 값으로 확인하세요.

결론

NumPy는 대규모 데이터셋과 숫자 연산을 다루는 데 필수적인 라이브러리입니다. 이 튜토리얼에서는 설치, 브로드캐스팅, 인덱싱, 슬라이싱, 시각화를 다루며, 성능 최적화 및 오류 해결 팁을 제공했습니다.

NumPy 배열을 다룰 때에는 이러한 팁을 기억하고, 의문이 생길 때는 항상 문서를 확인하는 것을 기억하세요. 즐거운 코딩하세요!