Python 将numpy对象数组转换为datetime时获取幻影“b”

Python 将numpy对象数组转换为datetime时获取幻影“b”,python,arrays,numpy,datetime,object,Python,Arrays,Numpy,Datetime,Object,我有一个包含许多列的大型数据集。我把每一列都做成一个数组。第一列是时间,单位为$H:$M:$S 当我把它放入一个数组中时,它会生成一个对象数组。我使用此选项将其转换为日期时间: time1=np.array2string(time) dt.datetime.strptime(time1, "%H:%M:%S") 但是,我不断得到一个错误: ValueError: time data "[b'00:00:00' b'00:01:00' b'00:02:00'

我有一个包含许多列的大型数据集。我把每一列都做成一个数组。第一列是时间,单位为$H:$M:$S

当我把它放入一个数组中时,它会生成一个对象数组。我使用此选项将其转换为日期时间:

time1=np.array2string(time)                  
dt.datetime.strptime(time1, "%H:%M:%S")
但是,我不断得到一个错误:

ValueError: time data "[b'00:00:00' b'00:01:00' b'00:02:00' ... b'23:57:00' b'23:58:00'\n b'23:59:00']" does not match format '%H:%M:%S'
当我查看实际数组时,它确实有幻象“b”,但在我的数据集中没有“b”。它是在稀薄的空气中产生的。这是什么原因造成的

更新:

我试过了

time1=np.array2string(time)                  
time_strings = [dt.datetime.strptime(t, "%H:%M:%S") for t in time1]
并收到错误信息:

ValueError: time data '[' does not match format '%H:%M:%S'

不知道为什么会有括号。它似乎仍然在做一个“b”

您的输入似乎是一个字节对象数组。您需要先将字节解码为字符串,然后才能使用strtime解析它们。 例如:


注意:“utf-8”是默认值,如果您有不同的编码,请进行调整。

strtime将字符串作为第一个位置参数,而不是您尝试执行的整个数组的字符串表示形式。可以改为使用列表comp:time_strings=[dt.datetime.strptime,%H:%M:%S表示时间为t]前缀b表示二进制字符串。也许您的数据是以二进制编码的?@QuangHoang:请查看np.array2string的返回值-很难让datetime.datetime.strptime使用该值guess@MrFuppes没有注意到这个功能。不知道OP为什么要用它。我仍然收到错误并编辑了问题以显示它们。time对象数组的类型列为bytes64。sidenote:这似乎是一种非常低效的方法,用于存储每个条目8个字节的内容,最多只需要3个字节:
ValueError: time data '[' does not match format '%H:%M:%S'
from datetime import datetime
import numpy as np

time = np.array([b'00:00:00', b'00:00:01', b'00:00:02'])

dt_list = [datetime.strptime(t.decode(encoding='utf-8'), "%H:%M:%S") for t in time]

# dt_list 
# [datetime.datetime(1900, 1, 1, 0, 0),
#  datetime.datetime(1900, 1, 1, 0, 0, 1),
#  datetime.datetime(1900, 1, 1, 0, 0, 2)]