-
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)
반응형'Python > Python' 카테고리의 다른 글
Python NumPy (8. NumPy 최대 최소 값 찾기) (0) 2020.01.22 Python NumPy(7. Sum 과 np.sum 차이 ) (0) 2020.01.21 Python Numpy ( 5. 배열 연결 및 분할) (0) 2020.01.20 Python Numpy (4. Numpy 배열 인덱싱) (0) 2020.01.20 Python Numpy (3.표준 데이터 타입) (0) 2020.01.20