Python NumPy에서 numpy.datetime_as_string() 메서드를 사용하면 날짜/시간(datetime) 배열을 문자열 배열로 손쉽게 변환할 수 있습니다. 이 메서드는 입력 배열과 동일한 형태(shape)의 문자열 배열을 반환하며, 첫 번째 매개변수로 형식화할 UTC 타임스탬프 배열을 전달합니다.
특히 unit 매개변수를 활용하면 날짜/시간의 정밀도(precision)를 원하는 단위로 조정할 수 있습니다. 이번 예제에서는 '시간(hours)' 단위를 지정하여 변환해 보겠습니다.
단계별 진행 과정
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
날짜/시간 배열을 생성합니다. dtype의 'M' 타입은 datetime64를 의미하며, 여기서는 분(m) 단위로 생성합니다.
arr = np.arange('2022-02-20T02:10', 6*60, 60, dtype='M8[m]')생성된 배열을 출력합니다.
print("Array...\n",arr)배열의 데이터 타입(dtype)을 확인합니다.
print("\nArray datatype...\n",arr.dtype)배열의 차원(ndim)을 확인합니다.
print("\nArray Dimensions...\n",arr.ndim)배열의 형태(shape)를 확인합니다.
print("\nOur Array Shape...\n",arr.shape)배열에 포함된 요소의 개수를 확인합니다.
print("\nNumber of elements in the Array...\n",arr.size)이제 numpy.datetime_as_string() 메서드를 사용하여 날짜/시간 배열을 문자열 배열로 변환합니다. unit 매개변수에 'h'(시간)를 전달하면 분 단위 정보는 제외되고 시간 단위까지만 표시됩니다.
print("\nResult...\n",np.datetime_as_string(arr, unit ='h'))전체 예제 코드
import numpy as np
# 날짜/시간 배열 생성
# 'M' 타입은 datetime을 의미함
arr = np.arange('2022-02-20T02:10', 6*60, 60, dtype='M8[m]')
# 배열 출력
print("Array...\n",arr)
# 데이터 타입 확인
print("\nArray datatype...\n",arr.dtype)
# 배열의 차원 확인
print("\nArray Dimensions...\n",arr.ndim)
# 배열의 형태 확인
print("\nOur Array Shape...\n",arr.shape)
# 배열 요소 개수 확인
print("\nNumber of elements in the Array...\n",arr.size)
# numpy.datetime_as_string() 메서드로 날짜/시간 배열을 문자열 배열로 변환
# 반환되는 배열은 입력 배열과 동일한 shape를 가짐
# 첫 번째 매개변수는 형식화할 UTC 타임스탬프 배열
# "units" 매개변수로 정밀도를 변경할 수 있으며, 여기서는 시간(h) 단위 사용
print("\nResult...\n",np.datetime_as_string(arr, unit ='h'))실행 결과
Array... ['2022-02-20T02:10' '2022-02-20T03:10' '2022-02-20T04:10' '2022-02-20T05:10' '2022-02-20T06:10' '2022-02-20T07:10'] Array datatype... datetime64[m] Array Dimensions... 1 Our Array Shape... (6,) Number of elements in the Array... 6 Result... ['2022-02-20T02' '2022-02-20T03' '2022-02-20T04' '2022-02-20T05' '2022-02-20T06' '2022-02-20T07']
실행 결과를 보면, 원본 배열은 분 단위(02:10, 03:10 등)까지 포함하고 있었지만, unit='h' 옵션을 적용한 결과 문자열은 시간 단위까지만 표시된 것을 확인할 수 있습니다. 이처럼 datetime_as_string() 메서드를 활용하면 정밀도를 자유롭게 조절하며 날짜/시간 데이터를 문자열로 변환할 수 있습니다.