Python,用格式化字符串

时间:2017-08-11 08:41:21

标签: python arrays string numpy

我有一个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

最好的方法是什么?

2 个答案:

答案 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']]