Python Numpy Loadtxt - 转换 unix 时间戳
Python Numpy Loadtxt - Convert unix timestamp
我有一个包含多行数据的文本文件 - 每行中的第一条数据是一个 unix 时间戳,例如 1436472000
。我正在使用 numpy.loadtxt
并且在转换器的参数中我想指定它以将时间戳转换为 numpy 理解为日期时间的任何内容。我知道这需要在大括号中的 0:
之后,但我不知道如何转换它。我知道转换器可以从 matplotlib.dates.strpdate2num
开始用于正常日期,但我认为这不适用于 unix 时间戳。
代码:
timestamp, closep, highp, lowp, openp, volume = np.loadtxt(fileName,delimiter=",",unpack=True,converters={ 0: })
提前感谢您的帮助,请询问您是否希望我澄清我的意思。
虽然转换器很方便,但它们很慢,因为它们为每行数据调用一次。将时间戳加载到 NumPy 整数数组后转换数据会更快:
x = np.array([1436472000, 1436472001])
x = np.asarray(x, dtype='datetime64[s]')
产生一个数组 NumPy datetime64
s:
array(['2015-07-09T16:00:00-0400', '2015-07-09T16:00:01-0400'],
dtype='datetime64[s]')
要获得 Python datetime.datetime
s 使用 tolist()
:
>>> x.tolist()
# [datetime.datetime(2015, 7, 9, 20, 0),
# datetime.datetime(2015, 7, 9, 20, 0, 1)]
如您所知,matplotlib datenums 计算自 0001-01-01 以来 天 的天数
00:00:00 UTC,加一。这些不是时间戳(自
纪元,1970-01-01 00:00:00 UTC):
>>> matplotlib.dates.date2num(x.tolist())
# array([ 735788.83333333, 735788.83334491])
我有一个包含多行数据的文本文件 - 每行中的第一条数据是一个 unix 时间戳,例如 1436472000
。我正在使用 numpy.loadtxt
并且在转换器的参数中我想指定它以将时间戳转换为 numpy 理解为日期时间的任何内容。我知道这需要在大括号中的 0:
之后,但我不知道如何转换它。我知道转换器可以从 matplotlib.dates.strpdate2num
开始用于正常日期,但我认为这不适用于 unix 时间戳。
代码:
timestamp, closep, highp, lowp, openp, volume = np.loadtxt(fileName,delimiter=",",unpack=True,converters={ 0: })
提前感谢您的帮助,请询问您是否希望我澄清我的意思。
虽然转换器很方便,但它们很慢,因为它们为每行数据调用一次。将时间戳加载到 NumPy 整数数组后转换数据会更快:
x = np.array([1436472000, 1436472001])
x = np.asarray(x, dtype='datetime64[s]')
产生一个数组 NumPy datetime64
s:
array(['2015-07-09T16:00:00-0400', '2015-07-09T16:00:01-0400'],
dtype='datetime64[s]')
要获得 Python datetime.datetime
s 使用 tolist()
:
>>> x.tolist()
# [datetime.datetime(2015, 7, 9, 20, 0),
# datetime.datetime(2015, 7, 9, 20, 0, 1)]
如您所知,matplotlib datenums 计算自 0001-01-01 以来 天 的天数 00:00:00 UTC,加一。这些不是时间戳(自 纪元,1970-01-01 00:00:00 UTC):
>>> matplotlib.dates.date2num(x.tolist())
# array([ 735788.83333333, 735788.83334491])