热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我希望从列表中创建一个数组,但保留NaN和infs

我正在解析一个数据文件,其中包含从c生成的空白分隔文本.一些驱动计算将溢出,下溢或生成NaN.似乎字符串“1.#INF00”和“1.#IND00”没有被numpy.array()消

我正在解析一个数据文件,其中包含从c生成的空白分隔文本.一些驱动计算将溢出,下溢或生成NaN.似乎字符串“1.#INF00”和“1.#IND00”没有被numpy.array()消化,返回“float()的无效文字”错误.我试图做这样的替换:

line = line.replace('1.#INF00','inf')
line = line.replace('1.#IND00','ind')
vals = line.split(' ')
myarray = array(vals)

但是,唉,无济于事.我也试过’nan’和’NaN’.是否有一些字符串我可以替换哪个float()将解释为nan,inf等?也许我需要在一些引用中逃脱?

顺便说一句,你能告诉我matplotlib将如何处理inf?
默认解决方案是在检测到NaN时将其更改为NaN. I have found it demonstrated matplotlib将优雅地处理这些,留下数据中的空白.这对我的’inf’和’ind’来说是可接受的治疗方法

解决方法:

float(‘nan’)应该返回NaN并且float(‘inf’)应该返回无穷大.至少这是他们如何使用我的翻译(CPython 2.7).在CPython 2.5中,某些平台(特别是在Windows上)的情况似乎有所不同,但我怀疑你是否使用了这样一个旧版本的Python.

也许问题是numpy,但在这种情况下你可以尝试:

line = line.replace('1.#INF00','inf')
line = line.replace('1.#IND00','nan')
vals = line.split(' ')
myarray = array([float(x) for x in vals])


推荐阅读
author-avatar
海纳百川2602902033
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有