개발일기

Python - numpy계산의 기초 본문

프로그래밍 언어/Python

Python - numpy계산의 기초

Flashback 2023. 12. 22. 17:38
728x90
반응형

numpy란?

numpy는 벡터, 행렬 등의 다차원 배열을 계산하며 각종 다양한 수학 계산을 지원하는 파이썬 라이브러리다.

 

ndarray 배열 생성

파이썬의 리스트와 다르게 numpy에서는 ndarray 객체 배열을 생성한다. ndarray객체 배열을 만드려면 np.array(…)를 사용한다.

import numpy as np # 일반적으로 np로 모듈 이름을 변경하여 사용한다.

python_list = [1, 2, 3] # python list
np_list = np.array([1, 2, 3]) # numpy list

print(type(python_list), type(np_list))
# <class 'list'> <class 'numpy.ndarray'>

 

ndarray는 기존 파이썬 list와 다르게 배열 안의 데이터들이 같은 데이터 타입을 가진다.

import numpy as np # 일반적으로 np로 모듈 이름을 변경하여 사용한다.

py_list = [1, 2., '딸기'] # python list
np_list = np.array([1, 2., '망고']) # numpy list

print(type(py_list[0]), type(py_list[1]), type(py_list[2]))
# <class 'int'> <class 'float'> <class 'str'>

print(type(np_list[0]), type(np_list[1]), type(np_list[2]))
# <class 'numpy.str_'> <class 'numpy.str_'> <class 'numpy.str_'>

첫번째는 int, 두번째는 float 그리고 세번째는 string형으로 넣고 타입을 출력하면 string형식으로 데이터 타입이 통일된것을 확인할 수 있다. 이와같이 여러개의 데이터 타입이 섞여 있으면 가장 큰 데이터 타입으로 변환된다.

 

데이터 타입 지정

ndarray를 선언하는 단계에서 dtype으로 데이터 타입을 강제로 지정할 수 있다.

import numpy as np # 일반적으로 np로 모듈 이름을 변경하여 사용한다.

np_list = np.array([1, 2., 3.], dtype='float64') # numpy list

print(type(np_list[0]), type(np_list[1]), type(np_list[2]))
# <class 'numpy.float64'> <class 'numpy.float64'> <class 'numpy.float64'>

 

arange 메소드

  • arange(시작점, 끝점, 간격, 데이터 타입): 시작점과 끝점 사이에서 일정한 간격으로 배열을 생성한다.
  • 시작점: 배열이 시작하는 숫자(기본값은 0)
  • 끝점: 배열이 종료되는 숫자이며 끝점의 값을 배열에 포함되지 않는다.
  • 간격: 시작점과 끝점 사이에 존재하는 값 사이의 간격(기본값은 1)
  • 데이터 타입: 데이터 값들의 타입을 지정
import numpy as np

np_list1 = np.arange(0, 5, 1) # array([0, 1, 2, 3, 4])
np_list2 = np.arange(6, 11, 1) # array([ 6,  7,  8,  9, 10]
np_list3 = np.arange(0, 10, 3) # array([0, 3, 6, 9])
np_list4 = np.arange(0, 5, 1, 'float64') #  array([0., 1., 2., 3., 4.])

 

ndarray 속성

  • shape: 배열의 형태를 나타낸다. 몇 행렬인지, 또는 몇차원인지 등의 형태를 알 수 있다.
  • dtype: 데이터 타입을 확인한다.
  • size: 전체 원소의 개수를 반환한다. [1, 2, 3]이면 3을 반환한다.
  • reshape(): 배열의 형태를 바꾼다. reshape()를 통해 일렬로 1차원 배열 np_list를 2차원 배열로 변경할 수 있다.
  • astype(): 데이터 타입을 변경한다.
import numpy as np

np_list = np.arange(0, 10)
print(np_list.shape) # (10,)
print(np_list.dtype) # int64
print(np_list.size) # 10

np_list2 = np_list.reshape(2,5) # reshape로 변경
print(np_list2) # (2, 5)형식의 배열로 변경
# [[0 1 2 3 4]
#  [5 6 7 8 9]]

np_list = np_list.astype('float64') # float64로 데이터 타입 변경
print(np_list.dtype) # float64

 

행렬곱

dot(), matmul() 메소드로 행렬곱을 계산할 수 있다.

import numpy as np

np_list1 = np.arange(0, 4)
np_list2 = np.arange(5, 9)

np_list1 = np_list1.reshape(2, 2)
np_list2 = np_list2.reshape(2,2)

print(np.matmul(np_list1, np_list2))
print(np.dot(np_list1, np_list2))

# [[ 7  8]
#  [31 36]]
# matmul()과 dot()의 곱 결과는 동일하다.

 


참고 사이트:

https://numpy.org/doc/stable/user/quickstart.html

 

NumPy quickstart — NumPy v1.26 Manual

NumPy provides familiar mathematical functions such as sin, cos, and exp. In NumPy, these are called “universal functions” (ufunc). Within NumPy, these functions operate elementwise on an array, producing an array as output. See also all, any, apply_al

numpy.org

 

728x90
반응형
Comments