Appia의 IT세상

파이썬[Python] 057 배열 연산 기본 연산 (sum,add,mod,extract,multiply,power,reciprocal)- Numpy010 본문

Python/Python Numpy

파이썬[Python] 057 배열 연산 기본 연산 (sum,add,mod,extract,multiply,power,reciprocal)- Numpy010

Appia 2020. 3. 5. 07:49
반응형

이번 포스팅에서는 배열의 연산에 대해서 간단하게 이야기 하고자 합니다. 저의 경우 MATLAB 코드에 많이 익숙하다가 Python으로 넘어온 경우다 보니, 실제 배열에 관해서는 MATLAB 훨씬 편해왔던 것이 사실입니다. 하지만, MATLAB 자체가 무거운 프로그램이다 보니 자연스럽게 가벼움을 쫓아서 여기까지 왔네요. 서론은 길었지만, 이번에는 배열의  쉽게 연산하는 방법에 대해서 살펴보고자 합니다.

 

기본 사칙 연산

Numpy에서 제공하는 배열사이에서는 자연스럽게 기본 연산을 이용해서 사용이 가능합니다. 하지만, Numpy에서 제공하는 연산도 이용가능합니다. 다음 예시를 보면서 살펴보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
value = np.array([[1,2,3],[4,5,6],[7,8,9]], dtype=np.float64)
value1 = np.array([[11,12,13],[14,15,16],[17,18,19]], dtype=np.float64)
print("+, 덧셈")
print(value + value1)
print(np.add(value,value1))
print("-, 뺄셈")
print(value1 - value)
print(np.extract(value1,value))
print("*, 곱셈")
print(value1 * value)
print(np.multiply(value1,value))
print("/, 나누기")
print(value1 / value)
print(np.divide(value1,value))
cs

사칙 연산을 각 연산 뿐만 아니라 numpy에서 제공하는 함수로도 가능합니다. 위의 연산을 실행하면 다음과 같은 결과가 나옵니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
+, 덧셈
[[12. 14. 16.]
 [18. 20. 22.]
 [24. 26. 28.]]
[[12. 14. 16.]
 [18. 20. 22.]
 [24. 26. 28.]]
-, 뺄셈
[[10. 10. 10.]
 [10. 10. 10.]
 [10. 10. 10.]]
[1. 2. 3. 4. 5. 6. 7. 8. 9.]
*, 곱셈
[[ 11.  24.  39.]
 [ 56.  75.  96.]
 [119. 144. 171.]]
[[ 11.  24.  39.]
 [ 56.  75.  96.]
 [119. 144. 171.]]
/, 나누기
[[11.          6.          4.33333333]
 [ 3.5         3.          2.66666667]
 [ 2.42857143  2.25        2.11111111]]
[[11.          6.          4.33333333]
 [ 3.5         3.          2.66666667]
 [ 2.42857143  2.25        2.11111111]]
cs

 

numpy.sum

역시 가장 많이 사용되는 함수는 numpy에서는 sum인것 같습니다. 다음 예시를 한번 살펴보겠습니다. 

1
2
3
4
5
6
7
import numpy as np
 
value = np.array([[1,2],[3,4]])
 
print(np.sum(value))
print(np.sum(value, axis=0))  
print(np.sum(value, axis=1))
cs

합계를 구해주는 sum함수를 이용하면 다음과 같은 결과가 나옵니다. 

1
2
3
10
[4 6]
[3 7]
cs

axis =0 일경우, 행 중심으로 연산 진행, axis = 1 각 열 중심으로 연산하여 결과를 도출합니다. 

 

 

numpy.mod()

나머지 구하기를 구할 때 사용하는 함수입니다. numpy.mod()함수는 numpy.remainder()와 동일한 결과 값을 나타내줍니다. 

1
2
3
4
5
import numpy as np
Value = np.array([15,30,45])
Value1 = np.array([2,7,9])
print(np.mod(Value,Value1))
print(np.remainder(Value,Value1))
cs

위의 간단한 예제를 실행하면 다음과 같은 결과를 표시합니다. 

1
2
[1 2 0]
[1 2 0]
cs

즉 위에 보이는 바와 같이 numpy.mod()와 numpy.remainder()는 동일한 결과 값을 나타냅니다. 

 

numpy.reciprocal()

각 수의 역수를 구해주는 함수입니다. 다음 예제를 한번 살펴보겠습니다. 

1
2
3
4
5
6
7
import numpy as np
Value = np.array([0.851.8510100]) // 기본 float 형태 
print(np.reciprocal(Value))
 
Value1 = np.array([100], dtype = int
print(Value1)
print(np.reciprocal(Value1))
cs

위의 예제를 실행하면 다음과 같은 결과가 나옵니다. 즉, 각 부분에 대한 역수를 표시해줍니다. 

1
2
3
4
RuntimeWarning: divide by zero encountered in reciprocal print(np.reciprocal(Value))
[1.17647059 0.54054054 1.                inf 0.01      ]
[100]
[0]
cs

0을 역수를 취할 수 없기 때문에 divide by zero에 관련된 Warning 메시지를 표시해 줍니다. 

 

numpy.power()

승수의 결과 값을 표시해주는 함수입니다. 다음 예제를 한번 살펴보면서 보겠습니다. 

1
2
3
4
5
6
7
import numpy as np
Value = np.array([2,10,15])
Value1 = np.array([1,2,3])
 
print(np.power(Value,2))
print('\n')
print(np.power(Value,Value1))
cs

위의 예제를 실행하면 다음과 같은 결과가 나옵니다. 

1
2
3
4
[  4 100 225]
 
 
[   2  100 3375]
cs

numpy(power(Value,2))는 간단히 첫번째 결과 값은 각 배열 맴버에 2승 값을 표현하는 부분입니다. 따라서 이 부분을 실행하면 상기 코드의 결과와 같이 4, 100, 225가 나옵니다. 그럼 그 다음에 있는 numpy(power(Value,Value1))는 두 배열을 바탕으로 값을 연산 해줍니다. 2의 1승, 10의 2승, 16의 3승 값을 표현해주는 것입니다. 

 

이번 포스팅에서는 numpy에 대한 기본 연산에 대해서 살펴봤습니다. 관련해서 매우 간단하나, 실제로 간단하면서 매우 많이 사용되는 기본 연산 법들입니다. 관련해서 문의 사항 및 궁금하시점은 댓글 부탁드립니다. 혹, 저의 글이 도움이 되었다면 공감버튼 눌려 주세요 . 감사합니다. 

 

반응형
Comments