我有一个numpy数组,它由十进制小时构成,如下所示:
13.1 13.2 13.3 13.4
14.1 14.2 14.3 14.4
15.1 15.2 15.3 15.4
我希望将此数组转换为时间字符串,然后使用自定义字符串格式替换此数组中的所有值。我像这样计算时间:
hours = int(time)
minutes = int((time*60) % 60)
seconds = int((time*3600) % 60)
从那里转换将像这样完成以获得时间字符串:
ftime = "{}:{}:{}".format(str(hours), str(minutes), str(seconds))
最后我希望使用这个格式化规则并用它替换数组中的所有值,这样我得到的结果如下:
13:06:00 13:12:00 13:18:00 13:24:00
14:06:00 14:12:00 14:18:00 14:24:00
15:06:00 15:12:00 15:18:00 15:24:00
最好的方法是什么?
答案 0 :(得分:1)
您可以使用np.vectorize
制作一个功能元素。
import numpy as np
def format_time(time):
hours = int(time)
minutes = int((time*60) % 60)
seconds = int((time*3600) % 60)
return "{:02}:{:02}:{:02}".format(hours, minutes, seconds)
format_time = np.vectorize(format_time)
result = format_time(array)
答案 1 :(得分:1)
您可以简单地将数组乘以代表1小时的numpy.timedelta64()
对象。
dates = np.array(hours * np.timedelta64(3600, 's'), dtype=str)
print(dates)
# [['13:06:00' '13:12:00' '13:18:00' '13:24:00']
# ['14:06:00' '14:12:00' '14:18:00' '14:24:00']
# ['15:06:00' '15:12:00' '15:18:00' '15:24:00']]