넘파이(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]
코드
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
코드
print(np.zeros(3))
print(np.ones(3))
zeros 함수는 이름에서도 알 수 있듯이 0으로 채워진 ndarray를 리턴하고, ones 함수는 1로 채워진 ndarray를 리턴합니다.
실행 결과

코드
size = (3,4)
print(np.zeros(size))
다음 코드는 3행 4열 형태의 0으로 채워진 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를 생성합니다.
실행 결과

코드
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'>
코드
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으로 나누기는 정의되어 있지 않기 때문에 경고가 발생하며 결괏값 자체는 극한 개념을 사용해서 무한대로 계산됩니다.
코드
arr = np.array([-1, 2, -3])
print(arr + np.nan)
print(arr + np.inf)
실행 결과

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