python

[numpy] numpy 범용 함수 - 숫자

전감자(◔◡◔) 2022. 9. 29. 01:25

- 범용 함수의 개념과 범용 함수인지 확인하는 법

범용함수는 각 레코드 요소마다 함수가 적용된다. numpy에만 있는 기능

'''
   범용 함수 ( universal function )
   1 개념
     데이터의 요소별로 연산을 수행하는 함수를 의미한다.
'''
import numpy as np

# 1. 범용 함수 확인
print(np.abs)  # <ufunc 'absolute'>

# 2. 일반함수
print(np.array)  # <built-in function array>
'''
   범용 함수 ( universal function )
   1 개념
     데이터의 요소별로 연산을 수행하는 함수를 의미한다.
'''
import numpy as np

# 1. np.abs : 절대값
print("1. np.abs : 절대값 ")
arr = np.array([-4.62, -2.19, 0, 1.57, 3.40, 4.06])
print(arr)
print(np.abs(arr)) # [4.62 2.19 0.   1.57 3.4  4.06]
print()

# 2. np.around :  0.5를 기준으로 올림 혹은 내림
print(" 2. np.around :  0.5를 기준으로 올림 혹은 내림")
arr = np.array([-4.62, -2.19, 0, 1.57, 3.40, 4.06])
print(arr)
print(np.around(arr)) # [-5. -2.  0.  2.  3.  4.]

# 3. np.round :  소수점 n 자리에서 반올림
print(" 3. np.round :  소수점 n 자리에서 반올림")
arr = np.array([-4.6298775, -2.19788, 0, 1.5786654, 3.409876, 4.06066])
print(arr)
print(np.round(arr)) # [-5. -2.  0.  2.  3.  4.]
print(np.round(arr, 1)) # [-4.6 -2.2  0.   1.6  3.4  4.1]
print(np.round(arr, 2)) # [-4.63 -2.2   0.    1.58  3.41  4.06]

# 4. np.rint :  가장 가까운 정수로 올림 혹은 내림
print(" 4. np.rint :  가장 가까운 정수로 올림 혹은 내림")
arr = np.array([-4.62, -2.19, 0, 1.57, 3.40, 4.06])
print(arr) # [-4.62 -2.19  0.    1.57  3.4   4.06]
print(np.rint(arr)) # [-5. -2.  0.  2.  3.  4.]

# 5. np.fix : 0 방향으로 가장 가까운 정수로 올림 혹은 내림
print(" 5. np.fix : 0 방향으로 가장 가까운 정수로 올림 혹은 내림")
arr = np.array([-4.62, -2.19, 0, 1.57, 3.40, 4.06])
print(arr) # [-4.62 -2.19  0.    1.57  3.4   4.06]
print(np.fix(arr)) # [-4. -2.  0.  1.  3.  4.]

# 6. np.ceil : 각 원소보다 같거나 큰 가장 작은 정수값으로 올림
print(" 6. np.ceil : 각 원소보다 같거나 큰 가장 작은 정수값으로 올림")
arr = np.array([-4.62, -2.19, 0, 1.57, 3.40, 4.06])
print(arr) # [-4.62 -2.19  0.    1.57  3.4   4.06]
print(np.ceil(arr)) # [-4. -2.  0.  2.  4.  5.]

# 7. np.floor : 각 원소보다 같거나  가장 큰 정수값으로 내림
print("7. np.floor : 각 원소보다 같거나  가장 큰 정수값으로 내림")
arr = np.array([-4.62, -2.19, 0, 1.57, 3.40, 4.06])
print(arr) # [-4.62 -2.19  0.    1.57  3.4   4.06]
print(np.floor(arr)) # [-5. -3.  0.  1.  3.  4.]

# 8. np.trunc :  각 원소의 소수점 절삭
print("8. np.trunc :  각 원소의 소수점 절삭")
arr = np.array([-4.62, -2.19, 0, 1.57, 3.40, 4.06])
print(arr) # [-4.62 -2.19  0.    1.57  3.4   4.06]
print(np.trunc(arr)) # [-4. -2.  0.  1.  3.  4.]

# 9. np.sqrt :  제곱근
print("9. np.sqrt :  제곱근")
arr = np.array([4,9,16])
print(arr) # [ 4  9 16]
print(np.sqrt(arr)) # [2. 3. 4.]
'''
   범용 함수 ( universal function )
   1 개념
     데이터의 요소별로 연산을 수행하는 함수를 의미한다.
'''
import numpy as np

# 1. np.add(arr,arr2) ==> + 연산과 동일
print("1. np.add(arr,arr2)")
arr = np.arange(5)
arr2 = arr + 10
print(arr) # [0 1 2 3 4]
print(arr2)  # [10 11 12 13 14]
print(arr + arr2) # [10 12 14 16 18]
print(np.add(arr, arr2)) # [10 12 14 16 18]

# 2. np.subtract(arr,arr2) ==>  - 연산과 동일
print("2. np.subtract(arr,arr2)")
arr = np.arange(5)
arr2 = arr + 10
print(arr) # [0 1 2 3 4]
print(arr2)  # [10 11 12 13 14]
print(arr - arr2) # [-10 -10 -10 -10 -10]
print(np.subtract(arr, arr2)) # [-10 -10 -10 -10 -10]

# 3. np.multiply(arr,arr2) ==>  * 연산과 동일
print("3. np.multiply(arr,arr2)")
arr = np.arange(5)
arr2 = arr + 10
print(arr) # [0 1 2 3 4]
print(arr2)  # [10 11 12 13 14]
print(arr * arr2) # [ 0 11 24 39 56]
print(np.multiply(arr, arr2)) # [ 0 11 24 39 56]

# 4. np.divide(arr,arr2) ==>  / 연산과 동일
print(10/3) # 3.3333333333333335
print("4. np.divide(arr,arr2)")
arr = np.arange(5)
arr2 = arr + 10
print(arr) # [0 1 2 3 4]
print(arr2)  # [10 11 12 13 14]
print(arr / arr2) # [0.         0.09090909 0.16666667 0.23076923 0.28571429]
print(np.divide(arr, arr2)) # [0.         0.09090909 0.16666667 0.23076923 0.28571429]

# 5. np.floor_divide(arr,arr2) ==>  // 연산과 동일 ( 몫 구하기 )
print(10//3) # 3
print("5. np.floor_divide(arr,arr2)")
arr = np.array([5,6,7,8])
arr2 = np.array([3,3,3,3])
print(arr) # [5 6 7 8]
print(arr2)  # [3 3 3 3]
print(arr // arr2) # [1 2 2 2]
print(np.floor_divide(arr, arr2)) # [1 2 2 2]

# 6. np.mod(arr,arr2) ==>  % 연산과 동일 ( 나머지 구하기 )
print(10%3) # 3
print("6. np.mod(arr,arr2)")
arr = np.array([5,6,7,8])
arr2 = np.array([3,3,3,3])
print(arr) # [5 6 7 8]
print(arr2)  # [3 3 3 3]
print(arr % arr2) # [2 0 1 2]
print(np.mod(arr, arr2)) # [2 0 1 2]

# 7. np.maximum(arr,arr2) ==> 인덱스별로 비교해서 큰 값 반환
print("7. np.maximum(arr,arr2)")
arr = np.array([5,6,7,568])
arr2 = np.array([3,13,33,3])
print(np.maximum(arr, arr2)) # [  5  13  33 568]

# 8. np.minimum(arr,arr2) ==> 인덱스별로 비교해서 작은 값 반환
print("8. np.minimum(arr,arr2)")
arr = np.array([5,6,7,568])
arr2 = np.array([3,13,33,3])
print(np.minimum(arr, arr2)) # [3 6 7 3]

# 9. 값 비교 ==> 논리값으로 반환0
arr = np.array([5,6,7,568,1])
arr2 = np.array([3,13,33,3,1])

print("크냐?",  np.greater(arr, arr2), arr > arr2) # [ True False False  True False]
print("크거나 같냐?",  np.greater_equal(arr, arr2), arr >= arr2) # [ True False False  True  True]
print("작냐?",  np.less(arr, arr2), arr < arr2) # [False  True  True False False]
print("작거냐 같나?",  np.less_equal(arr, arr2), arr < arr2) # [False  True  True False  True]
print("같냐?",  np.equal(arr, arr2), arr == arr2) # [False False False False  True]
print("같지 않냐?",  np.not_equal(arr, arr2), arr != arr2) # [ True  True  True  True False]