일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 | 31 |
- Windows10
- python
- 비주얼베이직
- 파이썬3
- git
- pythongui
- windows
- 엑셀
- pandas
- win32com
- 안드로이드
- 윈도우10
- office
- 윈도우11
- 문자열
- 파워포인트
- VBA
- 오피스
- python3
- 깃
- Outlook
- html
- 파이썬
- matlab
- 아웃룩
- Excel
- pyqt5
- Android
- Windows11
- 파이썬GUI
Appia의 IT세상
파이썬[Python] 057 배열 연산 기본 연산 (sum,add,mod,extract,multiply,power,reciprocal)- Numpy010 본문
파이썬[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.85, 1.85, 1, 0, 100]) // 기본 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에 대한 기본 연산에 대해서 살펴봤습니다. 관련해서 매우 간단하나, 실제로 간단하면서 매우 많이 사용되는 기본 연산 법들입니다. 관련해서 문의 사항 및 궁금하시점은 댓글 부탁드립니다. 혹, 저의 글이 도움이 되었다면 공감버튼 눌려 주세요 . 감사합니다.
'Python > Python Numpy' 카테고리의 다른 글
파이썬[Python] numpy 브로드캐스팅(Broadcasting)정의 및 조건 (2) | 2020.03.20 |
---|---|
파이썬[Python] numpy array를 list로 numpy dtype을 python기본 타입으로 변경하기 (1) | 2020.03.11 |
파이썬[Python] 056 배열 인덱싱(Indexing)과 슬라이싱(slicing) - Numpy009 (0) | 2020.03.04 |
파이썬[Python] 055 수의 범위을 바탕으로 배열을 생성하는 방법(arrange, linspace, logspace) - Numpy008 (0) | 2020.03.03 |
파이썬[Python] 054 바이너리(binary) 읽기(frombuffer), 쓰기(tobytes) - Numpy007 (0) | 2020.03.02 |