Python/Numpy

[Python] 파이썬 Numpy 기본 수학 연산 - true_divide, floor_divide (나눗셈 심화)

나비🦋 2024. 2. 27. 19:22
반응형

안녕하세요! 나비입니다 🦋

지난 파이썬 numpy 포스팅에서는 기본적인 곱셈과 나눗셈 함수인 multiply, divide에 대해 알아보았는데요,

이번 포스팅은 그중에서 나눗셈을 더 확장하여 true_divide, floor_divde라는 메소드를 다뤄보려 합니다.

true_divide함수는 true division을 해주는 함수이고, floor_divide함수는 floor division을 수행하는 함수입니다.

따라서, true division과 floor division이 무엇인지부터 우선 짚고 넘어갈게요!!




true division과 floor division 의미

파이썬에서의 true division은 float(실수) 자료형이 있는 경우의 나눗셈이고, floor divison은 나누는 수와 나눠지는 수가 모두 정수일 때의 나눗셈을 의미합니다.

자료형을 빼고 더 쉽게 설명드리자면, true division은 모두가 생각하는 일반적인 나눗셈이고, floor division은 나눗셈 계산의 결과에서 소수점을 버리고 정수로 나타내는 것입니다.

예를 들어,

2 나누기 4


를 계산하고자 할 때, true division을 수행하면 0.5이고, floor divison을 하면 0.5에서 소수점을 버리고 0이 되는 것입니다.

floor이 바닥(아래)이라는 뜻이 있어서 “소수점 버림“의 의미로 사용되는 것 같습니다.


이제부터는 코드를 통해 살펴보겠습니다.


numpy.true_division

import numpy as np

A = np.array([0, 1, 2, 4])

print(np.true_divide(A,4))
[0, 0.25, 0.5, 1.0]


지난번 포스팅에서 곱셈, 나눗셈 얘기하면서 계산법이 선형대수학 이론과 다르다고 말씀드렸었는데, 여기서도 마찬가지입니다.

true_divide는 A의 원소들을 4로 각각 true division해서 행벡터로 출력합니다.


예제 하나 더 보여드릴게요.

import numpy as np

A = np.array([2, 4, 8])
B = np.array([8, 4, 2])

print(np.true_divide(A,B))
[0.25, 1.0, 4.0]

원소의 개수가 동일한 행벡터끼리도 연산 가능합니다.




numpy.floor_divide

import numpy as np

A = np.array([0,1,2,3,4])

print(np.floor_divide(A,3))
[0,0,0,1,1]


0 / 3 = 0
1 / 3 = 0.33
2 / 3 = 0.66
3 / 3 = 1
4 / 3 = 1.33

위와 같은 결과에서, 0, 0.33, 0.66은 소수점을 버려서 0이 되고, 1과 1.33도 마찬가지 원리로 1이 됩니다.

true division에서 보여드렸던 것처럼 행벡터끼리도 연산이 가능합니다.

반응형