gpt4 book ai didi

python - 将日期从 HDF5 数据集转换为 numpy 数组

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:34 26 4
gpt4 key购买 nike

我有一个具有日期矩阵的 HDF5 数据集,我正在将其加载到我的 Python 脚本中并想将其用作 numpy 数组 -

>>> mat = h5py.File('xyz.mat')
>>> dates = mat['dates']
>>> dates
<HDF5 dataset "dates": shape (11, 285), type "<u2">

如果我尝试将它转换为 numpy 数组,我会收到以下错误 -

>>> dates = np.array(dates, dtype='datetime64')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/soft/python-epd/canopy-1.1.0-standalone/lib/python2.7/site-packages/h5py/_hl/dataset.py", line 490, in __array__
self.read_direct(arr)
File "/soft/python-epd/canopy-1.1.0-standalone/lib/python2.7/site-packages/h5py/_hl/dataset.py", line 460, in read_direct
self.id.read(mspace, fspace, dest)
File "h5d.pyx", line 173, in h5py.h5d.DatasetID.read (h5py/h5d.c:2523)
File "h5t.pyx", line 1439, in h5py.h5t.py_create (h5py/h5t.c:11361)
TypeError: No conversion path for dtype: dtype('<M8')

数据集中的每个日期都是“05-Mar-2012”的形式。

最佳答案

您的日期似乎被存储了……奇怪地。您的数据集是 16 位无符号整数的 11 x 285 矩阵。 (闻起来像是从 Matlab 导出的)。

基本上,问题在于 Numpy 尝试(但失败了)将矩阵的每个 元素(也就是日期的每个单独字符)转换为日期。

从 HDF5 的角度来看,将它们存储为 11 个字符长字符串的 285 个元素数组更有意义。那么Numpy中的转换就成功了。

如果您无法更改文件的生成方式,您可以通过连接矩阵的 285 列中每一列的 11 个字符,在 Python 中重建字符串。但这会很脏,你最好修复文件的生成方式;)

关于python - 将日期从 HDF5 数据集转换为 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22340999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com