프로그래밍 언어/Python

[파이썬 개념 정리 5]Numpy 라이브러리 개념 정리

ourkofe's story 2024. 6. 29. 00:20

이번 글은 코드잇 강의를 수강하면서 배운 내용을 주로 하여 정리되어 있습니다. (코드잇 스프린트 데이터 애널리스트 트랙 1기 훈련생)


라이브러리

데이터 분석 실무에서 많이 활용하는 Toolkit으로, 파이썬에서 필수적인 요소이다.

대표적인 라이브러리

  • numpy : 수치적인 연산을 할때 많이 활용함
  • pandas : 데이터를 표 형식으로 정리하고 분석함
  • matplotlib : 데이터의 효과적인 전달을 위해 데이터를 시각화할 때 사용함

Numpy(Numerical Python)

  • 수치적인 연산에 최적화된 라이브러리이다.(파이썬 도구)
  • 수학 연산과 통계 연산이 내장되어 있다.
  • 장점 1) 메모리 최적화 2) 연산 최적화
  • numpy이 없이 사용했을 때 상대적으로 복잡한 구현을 numpy로 간단하게 쓸 수 있다.
  • 넘파이의 근본이 되는 자료형은 numpy array(넘파이 배열)로 리스트와 유사한 점들이 많다.

array

import numpy as np

array1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) # 1차원 배열
print(array1) # ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

array2 = np.zeros(10)
print(array2) # ([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

array3 = np.arange(10)
print(array3) # ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 리스트와 유사하게 -1이 되는 숫자까지 호출

array4 = np.arange(2, 10)
print(array4) # ([2, 3, 4, 5, 6, 7, 8, 9])

array5 = np.arange(4, 17, 3)
print(array5) # ([4, 7, 10, 13, 16])

print(type(array1)) # numpy.ndarray nd : n dimensional (n차원)

 

  • 2차원 배열로도 array 생성 가능
# 2차원 배열
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(array1)
'''
([[1, 2, 3, 4], 
[5, 6, 7, 8], 
[9, 10, 11, 12]])

print(array1.size) # 12
print(array1.shape) # (3, 4)

1차원 array의 인덱싱과 슬라이싱

import numpy as np

gdp_array = ([14244, 23141, 34221, 1321, 234, 3141, 35321, 14141])
print(gdp_array) # ([14244, 23141, 34221, 1321, 234, 3141, 35321, 14141])

gdp_array[0] # 14244
gdp_array[-1] # 14141
gdp_array[[1, 3, 5]] # array([23141, 1321, 3141])
gdp_array[0:6] # [14244, 23141, 34221, 1321, 234, 3141] 0부터 5까지
gdp_array[:5] # [14244, 23141, 34221, 1321, 234] 0부터 4까지
gdp_array[1:8:3] # [23141, 234, 14141] # 1부터 7까지 3씩 뛰어서

2차원 array의 인덱싱과 슬라이싱

import numpy as np

price_array = np.array([
		[1,2,3,4,5,6],
		[7,8,9,10,11,12],
		[13,14,15,16,17,18],
		[19,20,21,22,23,24]
])

print(price_array)
''' 
array([[1,2,3,4,5,6],
		[7,8,9,10,11,12],
		[13,14,15,16,17,18],
		[19,20,21,22,23,24]])
'''
price_array[1][3] # 10
price_array[1:3][2:5] 
# array([[9, 10, 11],
#      [15, 16, 17]])
price_array[1:3, 2:]
# array([[9, 10, 11, 12],
#      [15, 16, 17, 18]])
price_array[:, 2:5]
# array([[3, 4, 5],
#      [9, 10, 11],    
#      [15, 16, 17],
#      [21, 22, 23]])
price_array[1:3, :]
# array([[7, 8, 9, 10, 11, 12],
#      [13, 14, 15, 16, 17, 18]])

불린 인덱싱과 마스킹

특정 조건에 따라서 어떤 조건들은 가리고 어떤 값들은 보여주는 경우를 말한다.

import numpy as np

gdp_array = np.array([6666, 1237, 14764, 31414, 2365, 27653, 14123, 8321, 5421, 6013])

mask = gdp_array > 10000
gdp_array[mask] # array([ 14764, 31414, 27653, 14123])
gdp_array[gdp_array > 10000] # 위 코드와 동일한 기능으로 활용 가능 array([ 14764, 31414, 27653, 14123])
gdp_array < 8000 # array([ True, True, False, False, True, False, False, False, True, True])
gdp_array[gdp_array < 8000] # array([6666, 1237, 2365, 5421, 6013])
# and -> &    or -> |   불린 인덱싱에서는 이 기호들을 대신해서 사용한다.
mask = (gdp_array < 8000) | (gdp_array > 10000)
gdp_array[mask] #  array([6666, 1237, 14764, 31414, 2365, 27653, 14123, 5421, 6013])
gdp_array[(gdp_array < 8000) | (gdp_array > 10000)]  # 위와 동일
(gdp_array >= 8000) & (gdp_array <= 10000) # array([False, False, False, False, False, False, False, True, False, False])
gdp_array[(gdp_array >= 8000) & (gdp_array <= 10000)] # array([])

Numpy의 기본 연산

gdp_usa_array = np.array([12257, 11561, 13165, 14673, 14696, 19403])

gdp_usa_array # array([12257, 11561, 13165, 14673, 14696, 19403])
gdp_usa_array.mean() # 14292.5
gdp_usa_array.sum() # 85775
gdp_usa_array.min() # 11561
gdp_usa_array.max() # 19403
gdp_usa_array * 2 # array([24514, 23122, 26330, 29346, 29392, 38806])

gdp_korea_array = np.array([36335, 37133, 3823, 39496, 41713, 44115])
gdp_usa_array.shape # (6, )
gdp_korea_array.shape #(6, )
gdp_korea_array - gdp_usa_array # array([24078, 25572, -9342, 24823, 27017, 24712])
gdp_korea_array / gdp_usa_array # array([2.96442849, 3.21191938, 0.29039119, 2.69174675, 2.8383914, 2.27361748])

이번 글에서는 파이썬의 라이브러리 / numpy / array / 불린 인덱싱 / numpy의 기본 연산이 포함된 내용을 정리했으며, 파이썬을 통해 코드를 작성하는 경우에 모두 필수적인 개념들로 꼭 잊지 말고 알아가야 하는 내용인 것 같습니다.

글 읽어주셔서 감사합니다


출처 및 참고자료 : 코드잇 사이트 강의 '데이터 사이언스 Toolkit' https://www.codeit.kr/topics/data-science-toolkit

728x90