Python - NumPy 소개 및 다양한 객체 생성
Page content
공지
제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.
I. 개요
NumPy
는 C언어로 구성되었으며, 고성능의 수치계산을 위해 나온 패키지이며,Numerical Python
의 약자이다.Python
을 활용한 데이터 분석을 수행할 때, 그리고 데이터 시각화나 전처리를 수행할 때,NumPy
는 매우 자주 사용되기 때문에 한번쯤은 꼭 다듬고 가는 것이 중요하다.- 독자의 가독성을 위해 두번에 걸쳐 나눠서 연재하려고 한다.
II. 모듈 Import
- 패키지 설치방법은 설치 문서를 확인한다.
import numpy as np
print(np.__version__)
1.18.4
III. 배열 생성
NumPy
를 활용하여Array(배열)
을 만들어 본다.- 먼저 1차원 배열을 생성한다.
# Defining 1D array
array_1D = np.array([1,8,27,64])
print(array_1D)
[ 1 8 27 64]
- 이번에는 2차원 배열을 생성한다.
array_2D = np.array([[1,2,3,4], [2,4,9,16], [4,8,18,32]])
print(array_2D)
[[ 1 2 3 4]
[ 2 4 9 16]
[ 4 8 18 32]]
- 이번에는 3차원 배열을 생성한다.
array_3D = np.array([[[1,2,3,4],[5,6,7,8]],[[1,2,3,4],[9,10,11,12]]])
print(array_3D)
[[[ 1 2 3 4]
[ 5 6 7 8]]
[[ 1 2 3 4]
[ 9 10 11 12]]]
IV. 배열에 대한 정보 확인
- 배열의 정보를 확인하는 다양한 함수가 존재한다.
- 현재 저장된 배열에 대해
RAM
의 주소를 확인할 수 있다.
print(array_2D.data)
<memory at 0x7f1348684ea0>
- 배열의 구조를 확인할 수 있다.
print(array_2D.shape)
(3, 4)
- 배열의 데이터 타입을 확인할 수 있다.
print(array_2D.dtype)
int64
- 배열의 간격 및 각 요소간의 간격에 대해서도 확인이 가능하다.
V. NumPy를 활용한 다양한 객체 생성
- NumPy 패키지내의 함수를 활용하여 다양한 방식으로 패키지를 작성해보자.
# Array of 1
import numpy as np
ones = np.ones((3,4)) # 행, 열
print(ones)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
# Array of 0
zeros = np.zeros((2,3,5), dtype=np.int16) # 3차원의 개수, 2차원의 개수, 1차원의 개수
print(zeros)
[[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]]
# Array with 랜덤값
np.random.random((2,2)) # 2차원의 개수, 1차원의 개수
array([[0.25327514, 0.82196535],
[0.77309235, 0.84250901]])
# Empty 배열
emptyArray = np.empty((3,2))
print(emptyArray)
[[0. 0.]
[0. 0.]
[0. 0.]]
# Full Array
fullArray = np.full((2,2), 7)
print(fullArray)
[[7 7]
[7 7]]
# Array of Evenly-Spaced Values (1차원 배열)
evenSpacedArray = np.arange(10,50,5)
print(evenSpacedArray)
[10 15 20 25 30 35 40 45]
arange
특정한 규칙에 따라 증가하는 수열을 생성한다.- 위 예제에서는 5만큼 증가하는 수열을 만들었다.
evenSpacedArray2 = np.linspace(0,2,9)
print(evenSpacedArray2)
[0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. ]
evenSpacedArray3 = np.logspace(0,2,9)
print(evenSpacedArray3)
[ 1. 1.77827941 3.16227766 5.62341325 10.
17.7827941 31.6227766 56.23413252 100. ]
- linspace & logspace 명령은 선형 구간 혹은 로그 구간을
지정한 구간의 수
만큼분할
한다.
VI. What’s Next
지금까지는 NumPy
를 활용한 객체 생성에 대해 짧게 익혔다. 그러나, NumPy의 가장 중요한 것은 각각의 배열간의 연산이며, 이러한 연산기법에 대한 이해가 있어야 향후에 배우게 될 머신러닝 & 딥러닝
에 대한 이해를 하는데 도움이 될 수 있기 때문에, 꼭 다음 포스트를 읽어두는 것을 추천한다.
- Python - NumPy의 응용에 대해 배우도록 한다.
Reference
Mukhiya, Suresh Kumar, and Usman Ahmed. “Hands-On Exploratory Data Analysis with Python.” Packt Publishing, Mar. 2020, www.packtpub.com/data/hands-on-exploratory-data-analysis-with-python.