Python 공부 기록-6

김시헌·2025년 3월 31일

넘파이

넘파이(Numpy)는 Numeric과 Python의 합성어로 수학 및 과학 연산을 위한 파이썬 패키지이다.

에제

코드

import numpy as np
data = [1,2,3]
arr = np.array(data)
print(arr)
print(type(arr))

as np는 numpy를 쉽게 쓰기위해 별칭을 정해준 것이다.

실행 결과
[1 2 3]
<class 'numpy.ndarray'>

넘파이를 활용한 간단한 연산

코드

import numpy as np

arr = np.array([1,2,3])
result = arr * 10
print(result)

실행 결과
[10 20 30]

2차원 배열을 넘파이로 표현하기

코드

import numpy as np 

data2d = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

arr = np.array(data2d)
print(arr[ : , 0])

arr[행 인덱스, 열 인덱스]
행 인덱스에 콜론(:)을 사용한 것은 모든 행을 선택하는 것을 의미한다.

실행 결과
[1 4 7]

코드

print(arr.shape)  
print(arr.ndim)
print(arr.dtype)

ndarray 객체의 인스턴스 변수를 사용해서 저장된 데이터의 정보를 조회할 수 있습니다. shape은 ndarray의 크기 정보를, ndim은 차원 정보, dtype은 데이터 타입을 표현합니다.

실행 결과
(3, 3)
2
int64

zeros 함수 사용하기

코드

print(np.zeros(3))
print(np.ones(3))

zeros 함수는 이름에서도 알 수 있듯이 0으로 채워진 ndarray를 리턴하고, ones 함수는 1로 채워진 ndarray를 리턴합니다.

실행 결과

zeros와 ones 함수의 인자로 튜플을 전달하기

코드

size = (3,4)
print(np.zeros(size))

다음 코드는 3행 4열 형태의 0으로 채워진 ndarray를 생성한다.

실행 결과

넘파이의 arange 함수는 최대 세 개의 파라미터를 입력할 수 있으며, 지정된 범위의 규칙적인 숫자를 갖는 ndarray 객체를 반환한다.

코드

print(np.arange(5))           
print(np.arange(1, 5))
print(np.arange(1, 5, 2))

라인 1: 0부터 4까지의 데이터가 포함된 ndarray를 생성합니다. 라인 2: 1부터 4까지의 데이터가 포함된 ndarray를 생성합니다. 라인 3: 1부터 4까지 2씩 증가하는 데이터를 ndarray를 생성합니다.

실행 결과

reshape 함수 사용하기

코드

ndarr1 = np.arange(6)
ndarr2 = ndarr1.reshape(2, 3)
print(ndarr2)

6개의 원소로 구성된 1차원 배열 ndarr1을 2행 3열의 ndarray로 변환합니다.

실행 결과

데이터 타입

넘파이 주요 데이터 타입

넘파이에는 무한대와 결측치를 표현하는 특수한 데이터 사용하기

코드

print(np.nan,  type(np.nan))
print(np.inf,  type(np.inf))
print(-np.inf,  type(-np.inf))

inf 혹은 -inf는 무한대의 숫자를 뜻한다.

실행 결과
nan <class 'float'>
inf <class 'float'>
-inf <class 'float'>

ndarray를 0으로 나누기

코드

arr = np.array([-1, 2, -3])
print(arr/0)

실행 결과

[-inf  inf -inf]
<ipython-input-26-cb6c03859f6d>:2: RuntimeWarning: divide by zero encountered in divide
  print(arr/0)

실행해 보니 경고 메시지와 함께 inf가 출력됩니다. 수학에서 0으로 나누기는 정의되어 있지 않기 때문에 경고가 발생하며 결괏값 자체는 극한 개념을 사용해서 무한대로 계산됩니다.

nan과의 연산은 어떻게 동작하는지 알아보기

코드

arr = np.array([-1, 2, -3])
print(arr + np.nan)
print(arr + np.inf)

실행 결과

넘파이는 이를 실수 타입으로 정의해서 내부적으로 데이터의 연산을 쉽게 처리합니다.

0개의 댓글