gpt4 book ai didi

python - 我想从列表创建一个数组,但保留 NaN 和 infs

转载 作者:太空狗 更新时间:2023-10-30 02:49:54 24 4
gpt4 key购买 nike

我正在解析一个数据文件,其中包含从 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。 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])

关于python - 我想从列表创建一个数组,但保留 NaN 和 infs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998706/

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