728x90
NumPy?
단순하고, 강력한 데이터구조인 N 차원 배열을 제공하는 Python 라이브러리
NumPy의 이점
- C로 작성된 알고리즘로 보다 빠른 속도
- 루프나 반복 처리의 효율
- 간격한 코드
- 좋은 품질
NumPy 설치
#Conda
conda install numpy
#PIP
pip install numpy
NumPy Example
import numpy as np
digits = np.array([
[1,2,3],
[4,5,6],
[7,8,9],
])
print(digits)
''' Output
[[1 2 3]
[4 5 6]
[7 8 9]]
'''
NumPy Vectorization & Boadcasting Example
import numpy as np
CURVE_CENTER = 80
grades = np.array([72,35,64,88,51,90,74,12])
def curve(grades):
#배열 속성값의 평균값을 구한다.
#average = 60.75
average = grades.mean()
change = CURVE_CENTER - average
#grades 각 요소값에서 change값을 더한다. (Vectorization & Broadcasting)
new_grades = grades + change
#print(new_grades)
#
return np.clip(new_grades, grades, 100)
'''
numpy.clip(a, a_min, a_max)
배열의 요소에 포함된 값을 최소, 최대 값 제한하여 클리핑합니다.
a 배열의 요소에 포함된 values < a_min 은 a_min 으로, values > a_max 는 a_max 로 바뀝니다 .
'''
cur = curve(grades)
print(cur)
[13 Line] new_grades = grades + change
코드는 Vetorization과 Broadcasting의 중요한 두가지 개념을 활용합니다.
- Vetorization : 배열의 각 요소에 대해 동일한 방식으로 동일한 작업을 수행하는 프로세스. for 루프 없이 동일한 결과를 얻을 수 있음.
- Broadcasting : 모양이 다른 두 배열을 확장하고 이들 사이에서 벡터화된 계산을 수행하는 방법을 알아내는 과정
grades의 숫자 배열[8]이며 기본적으로 모양 change이 있는 스칼라(Scala) 값 입니다. 이 경우 NumPy는 배열의 각 항목에 스칼라를 추가하고 결과와 함께 새 배열을 반환
<NumPy Tutorial>
[Python] NumPy Tutorial #2 : shape & reshape
728x90
'Data Science > Python' 카테고리의 다른 글
[pandas] Dataframe concatenate (0) | 2022.04.16 |
---|---|
[Python] NumPy Tutorial #2 : shape & reshape (0) | 2022.04.12 |
[pandas] Create pandas dataframe from nested dict. (0) | 2022.04.06 |
[Python] Pillow 이용한 이미지에 텍스트 추가 (0) | 2022.04.02 |
[Numpy] Numpy Array 오름차순 / 내림차순 정렬 (0) | 2022.03.16 |
최근댓글