NumPy의 numpy.ceil() 함수


구문:

numpy.ceil(array, out=None)

매개변수:

  • array: 입력 배열
  • out (선택 사항): 결과를 저장할 출력 배열

반환값:

입력 배열과 동일한 형상의 배열로, 각 요소가 천장 함수에 따라 반올림된 값으로 변환됩니다.

예제:

import numpy as np

# 1D 배열 생성
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

# ceil() 함수를 사용하여 천장 함수 적용
result = np.ceil(a)

print(result)
[ -1.  -1.  0.  1.  2.  2.  2.]

사용 사례:

  • 소수점 값을 가장 가까운 정수로 변환하여 정수 연산에 활용
  • 데이터 시각화에서 축 범위 설정
  • 금융 계산에서 금액 반올림

참고:

  • numpy.floor() 함수는 numpy.ceil() 함수와 반대로 작동하며, 각 요소보다 작거나 같은 가장 가까운 정수로 변환합니다.
  • numpy.round() 함수는 반올림 규칙을 추가적으로 설정하여 반올림 방식을 제어할 수 있습니다.


NumPy ceil() 함수 관련 샘플 코드

import numpy as np

# 1D 배열 생성
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

# ceil() 함수를 사용하여 천장 함수 적용
result = np.ceil(a)

print(result)

출력:

[-1.  -1.  0.  1.  2.  2.  2.]

금액 반올림:

import numpy as np

# 가격 데이터 배열 생성
prices = np.array([12.50, 9.99, 24.75, 18.00])

# ceil() 함수를 사용하여 가격 반올림 (1자리까지)
rounded_prices = np.ceil(prices * 0.01) * 0.01

print(rounded_prices)
[13.  10.  25.  18.]
import matplotlib.pyplot as plt
import numpy as np

# 데이터 생성
x = np.arange(10)
y = np.random.rand(10)

# ceil() 함수를 사용하여 y축 범위 설정
plt.ylim(0, np.ceil(np.max(y)))

# 그래프 출력
plt.plot(x, y)
plt.show()

특정 값으로 반올림 규칙 설정:

import numpy as np

# 1D 배열 생성
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

# 특정 값(-0.5)으로 반올림 규칙 설정
result = np.ceil(a, casting='unsafe')

print(result)
[-2.  -2.  0.  0.  2.  2.  2.]
  • 위 코드는 예시이며, 실제 상황에 맞게 수정하여 사용해야 합니다.
  • NumPy 공식 문서 및 다른 온라인 자료를 참고하여 더 많은 정보를 얻을 수 있습니다.


NumPy ceil() 함수의 대체 방법

math.ceil() 함수 사용:

  • 표준 라이브러리 math 모듈에 있는 ceil() 함수를 사용할 수 있습니다.
  • NumPy 배열을 Python 리스트로 변환해야 하며, 계산 후 다시 NumPy 배열로 변환해야 합니다.
  • 성능 측면에서 NumPy ceil() 함수보다 느릴 수 있습니다.
import math
import numpy as np

# 1D 배열 생성
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

# math.ceil() 함수를 사용하여 천장 함수 적용
result = [math.ceil(x) for x in a]

# 결과를 NumPy 배열로 변환
result = np.array(result)

print(result)

직접 구현:

  • 간단한 경우, 직접 for 루프를 사용하여 천장 함수를 구현할 수 있습니다.
  • NumPy 배열을 직접 조작할 수 있지만, 코드가 더 복잡해질 수 있습니다.
import numpy as np

# 1D 배열 생성
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

# 직접 구현한 천장 함수
def my_ceil(x):
  if x >= 0:
    return int(x)
  else:
    return int(x) - 1

# 결과 배열 생성
result = np.empty_like(a)

# for 루프를 사용하여 직접 천장 함수 적용
for i in range(len(a)):
  result[i] = my_ceil(a[i])

print(result)

다른 NumPy 함수 활용:

  • 특정 상황에서 numpy.fix(), numpy.round() 함수를 사용하여 numpy.ceil() 함수를 대체할 수 있습니다.
  • 예를 들어, numpy.fix() 함수는 소수점 부분을 버리고 정수 부분만 반환합니다.
import numpy as np

# 1D 배열 생성
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

# numpy.fix() 함수를 사용하여 소수점 부분 버리기
result = np.fix(a)

print(result)

주의 사항:

  • 대체 방법을 사용하기 전에 각 방법의 성능, 정확성, 코드 복잡성 등을 고려해야 합니다.
  • 특정 상황에 따라 numpy.ceil() 함수가 여전히 가장 적합한 선택일 수 있습니다.