微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

列表到 numpy 数组,不一致的字符串到浮点数转换错误

如何解决列表到 numpy 数组,不一致的字符串到浮点数转换错误

我很难理解以下异常,尽管我确信它非常简单。

我有一个列表 raw_ticker,具有以下值:

raw_ticker = ['t1INCH:USD',3.5881,17907.680602819994,3.5945,10610.799208380002,-0.0172,-0.0048,3.5982,300068.50303883,3.9639,2.7685]

我想把它转换成一个numpy数组ticker,并指定数据类型:

ticker = np.array(raw_ticker,dtype=[
        ('symbol',str),('bid',float),('bid_size',('ask',('ask_size',('day_chg',('day_chg_p',('last',('vol',('high',('low',float)])

我收到以下错误

无法将字符串转换为浮点数:'t1INCH:USD'

我没有得到,因为我明确指定这个字段是一个字符串,而不是一个浮点数。

解决方法

以元组或元组列表的形式提供数据:

In [363]: raw_ticker = ['t1INCH:USD',3.5881,17907.680602819994,3.5945,10610.799208380002,-
     ...: 0.0172,-0.0048,3.5982,300068.50303883,3.9639,2.7685]
In [364]: ticker = np.array(tuple(raw_ticker),...:         dtype=[
     ...:         ('symbol',str),...:         ('bid',float),...:         ('bid_size',...:         ('ask',...:         ('ask_size',...:         ('day_chg',...:         ('day_chg_p',...:         ('last',...:         ('vol',...:         ('high',...:         ('low',float)])
In [365]: ticker
Out[365]: 
array(('',17907.68060282,10610.79920838,-0.0172,2.7685),dtype=[('symbol','<U'),('bid','<f8'),('bid_size',('ask',('ask_size',('day_chg',('day_chg_p',('last',('vol',('high',('low','<f8')])

'symbol' dtype 需要一个字符串宽度,例如'U20'。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。