为了账号安全,请及时绑定邮箱和手机立即绑定

numpy的recordarray与时间?

numpy的recordarray与时间?

GCT1015 2021-03-14 14:15:40
我正在尝试将XML文件读入NumPy记录数组。时间以祖鲁时间为准,u'2013-06-06T17:47:38Z'其他列为floats。时间和floats都可以转换为NumPy数组。但是,如果我尝试制作一个recordarray,它会以多种方式失败(这可能表明我不知道如何创建记录数组):In [124]: dataarr = np.array(zip(*[datadict[k] for k in keys]),   .....:                     dtype=[(k,dtypes[k]) for k in keys])Traceback (most recent call last):  File "<ipython-input-124-d59123796cfa>", line 2, in <module>    dtype=[(k,dtypes[k]) for k in keys])ValueError: Cannot create a NumPy datetime other than NaT with generic unitsIn [125]: dataarr = np.array([datadict[k] for k in keys],                    dtype=[(k,dtypes[k]) for k in keys])Traceback (most recent call last):  File "<ipython-input-125-ee9077bf1961>", line 2, in <module>    dtype=[(k,dtypes[k]) for k in keys])TypeError: expected a readable buffer objectIn [126]: dataarr = np.array([datadict[k] for k in keys],                    dtype=[dtypes[k] for k in keys])Traceback (most recent call last):  File "<ipython-input-126-a456052bdfd4>", line 2, in <module>    dtype=[dtypes[k] for k in keys])TypeError: data type not understoodIn [127]: dtypesOut[127]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64'}创建recordarray收录时间的正确方法是什么?(keys是一个列表,datadict并且dtype是http://stardict.sourceforge.net/Dictionaries.php下载)
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

糟糕,在recarray中使用numpy datetime64弄清楚了


我尝试使用datetime[D],但失败了:


In [19]: dtypes

Out[19]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64[D]'}


In [20]: dataarr = np.array(zip(*[datadict[k] for k in keys]),

                    dtype=[(k,dtypes[k]) for k in keys])

Traceback (most recent call last):

  File "<ipython-input-20-d59123796cfa>", line 2, in <module>

    dtype=[(k,dtypes[k]) for k in keys])

TypeError: Cannot cast NumPy timedelta64 scalar from metadata [s] to [D] according to the rule 'same_kind'

但datetime[s]有效:


In [22]: dtypes

Out[22]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64[s]'}


In [23]: dataarr = np.array(zip(*[datadict[k] for k in keys]),

                    dtype=[(k,dtypes[k]) for k in keys])


查看完整回答
反对 回复 2021-03-31
  • 1 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号