Array mathematics
기본적인 수학 연산이 가능합니다. 이 경우 원소 대 원소로 적용이 됩니다. 즉, 더하기, 빼기 등의 연산은 기본적으로 같이 사이즈여야 한다는 것이죠.
>>> a = np.array([1,2,3], float) >>> b = np.array([5,2,6], float) >>> a + b array([6., 4., 9.]) >>> a – b array([-4., 0., -3.]) >>> a * b array([5., 4., 18.]) >>> b / a array([5., 1., 2.]) >>> a % b array([1., 0., 3.]) >>> b**a array([5., 4., 216.]) |
2차원 array 에서 곱하기 연산은 행렬곱을 따르는 것이 아니라 원소 단위로 이루어집니다.
>>> a = np.array([[1,2], [3,4]], float) >>> b = np.array([[2,0], [1,3]], float) >>> a * b array([[2., 0.], [3., 12.]]) |
사이즈가 맞지 않으면 아래와 같이 에러(shape mismatch)가 발생합니다.
>>> a = np.array([1,2,3], float) >>> b = np.array([4,5], float) >>> a + b Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: shape mismatch: objects cannot be broadcast to a single shape |
하지만 dimension 이 일치하지 않는 경우에는 수학적 연산을 수행하기 위해 브로드캐스팅하게 된다.
아래의 예에서 보듯이 상대적으로 작은 array b 가 array a 와 사이즈를 맞추기 위해 브로드캐스팅된다.
b 는 a 의 각각의 아이템만큼 반복된다.
파이썬은 이런 식으로 브로드캐스팅한다.
마치 array b 가 array([[-1., 3.],
[-1., 3.],
[-1., 3.]]) 인 것처럼 말이다.
>>> a = np.array([[1, 2], [3, 4], [5, 6]], float) |
newaxis 상수를 이용하여 브로드캐스팅 대상을 특정할 수 있다.
> import numpy as np |
이상의 표준 연산자 외에도 NumPy 는 아래와 같은 다양한 함수를 제공한다.
abs, sign, sqrt, log, log10, exp, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, and arctanh.
>>> a = np.array([1, 4, 9], float) >>> np.sqrt(a) array([ 1., 2., 3.]) |
>>> a = np.array([1.1, 1.5, 1.9], float) >>> np.floor(a) // 내림 array([ 1., 1., 1.]) >>> np.ceil(a) // 올림 array([ 2., 2., 2.]) >>> np.rint(a) // 반올림 array([ 1., 2., 2.]) |
pi/ e
파이값과 오일러 상수
>>> np.pi 3.1415926535897931 >>> np.e 2.7182818284590451 |
'프로그래밍 Programming' 카테고리의 다른 글
numpy - Arrays (4) (Array iteration) (0) | 2015.03.08 |
---|---|
python print x IndentationError (0) | 2015.03.08 |
numpy - Arrays (3) (Array를 만드는 다른 방법들) (0) | 2015.02.28 |
numpy - Arrays (2) (0) | 2015.02.26 |
numpy - Arrays (1) (0) | 2015.02.26 |