ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python NumPy(6. NumPy ufuncs연산)
    Python/Python 2020. 1. 21. 14:04
    반응형

    파이썬은 동적인 언어이기 때문에 타입이 유연하다
    이는 효율적인 머신 코드로 컴파일될 수 없다는 뜻이다.

    파이썬은 수많은 작은 연산이 반복되는 상황에서 확연히 느리다. 
    이러한 연산 속도를 더 빠르게 하기 위해서 필요한것이 바로 ufuncs 연산이다.

     

     

    #Numpy ufuncs는 파이썬 기본 산술연산자를 사용하기에 자연스럽게 사용할 수 있다.
    x = np.arange(4)
    print('x     =' , x)
    print('x+5   =' ,  x+5)
    print('x-5   =' , x-5 )
    print('x*2   =' , x*2)
    print('x/2   =' , x/2)
    print('x//2  =' , x//2)
    #배열안에 인자값에 연산한것을 확인할 수 있다.

    #음수를 만드는 단항 ufuncs와 지수 연산자 ** , 나머지 연산자 % 가 있다.
    print('-x   =' ,-x )
    print('x**2 =', x**2)
    print('x % 2=', x%2)

    #이 산술 연산은 모두 사용상 편의를 위해 NumPy 에 내장된 특정 함수를 감싼 것이다. 예를들어 , + 연산자는 add 함수의 래퍼(wrapper)함수다.
    np.add(x,2)
    

    # 절대값 함수 abx
    x= np.array([-2,-1,0,1,2])
    abs(x)

    # 복소수 데이터도 처리할수있으며 절대값은 크기를 반환한다.
    x=np.array([3-4j,4-3j])
    np.abs(x)

    #삼각함수도 사용가능하다 .
    theta = np.linspace(0,np.pi,3)
    print('theta =', theta)
    print('sin(theta)' , np.sin(theta))
    print('cos(theta)', np.cos(theta))
    print('tan(theta)', np.tan(theta))

    #지수 로그 
    x =[ 1,2,3]
    print('x =' , x)
    print('e^x=',np.exp(x))
    print('2^x= ', np.exp2(x))
    print('3^x= ' , np.power(3,x))

    x = [1,2,4,10]
    print('x          =',x)
    print('ln(x)      =',np.log(x))
    print('log2(x)    =',np.log2(x))
    print('log10(x)   =' ,np.log10(x))

    #출력지정
    #대규모 연산인 경우 연산결과를 저장할 배열을 지정하는것이 유용할 때가 있다.
    #임시 배열을 생성하지 않고 지정한 배열을 이용해 원하는 메모리 위치에 직접연산 결과를 쓸 수 있다.
    #모든 ufuncs에서 함수의 out 인수를 사용해 출력을 지정할수있다.
    
    x = np.arange(5)
    y = np.empty(5)
    np.multiply(x,10,out=y)
    print(y)

    y = np.zeros(10)
    np.power(2,x,out=y[::2])
    print(y)

    #집계
    #배열을 특정 연산으로 축사하고자 한다면 ufunc의 reduce 메서드를 사용하면된다. 
    #reduce 메서드는 결과가 하나만 남을 때까지 해당 연산을 배열 요소에 반복해서 적용한다.
    x=np.arange(1,6)  # 5+4+3+2+1
    np.add.reduce(x)

    np.multiply.reduce(x) #5!

    #계산중 결과를 저장하고 싶다면
    np.add.accumulate(x)

    반응형

    댓글

Designed by Tistory.