Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python NumPy에서 시간 단위를 지정하여 날짜/시간 배열을 문자열 배열로 변환하기

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() 메서드를 활용하면 정밀도를 자유롭게 조절하며 날짜/시간 데이터를 문자열로 변환할 수 있습니다.