728x90

 


NumPy?

단순하고, 강력한 데이터구조인 N 차원  배열을 제공하는 Python 라이브러리

NumPy의 이점

  1. C로 작성된 알고리즘로 보다 빠른 속도
  2. 루프나 반복 처리의 효율
  3. 간격한 코드 
  4. 좋은 품질 

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

 

https://unsplash.com/photos/LqKhnDzSF-8

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
반응형