我正在分析一个包含由c++生成的空白分隔文本的数据文件。一些驱动计算将溢出、下溢或生成NaN。似乎字符串“1.#INF00”和“1.#IND00”没有被消化数字阵列(),返回“float()的文本无效”错误。我尝试过这样的替代品:
line = line.replace('1.#INF00','inf')
line = line.replace('1.#IND00','ind')
vals = line.split(' ')
myarray = array(vals)
但是,唉,无济于事。我也试过“楠”和“楠”。有没有什么字符串可以替换成float()将解释成nan、inf等?也许我需要用一些引语来逃避?在
另外,你能告诉我matplotlib如何处理inf吗? 默认的解决方案是在检测到它们时将它们更改为NaN。I have found it demonstratedmatplotlib将优雅地处理这些,在数据中留下空白。这对我的inf和ind是可以接受的治疗
float('nan')
应返回NaN,float('inf')
应返回无穷大。至少他们在我的解释器(cpython2.7)上就是这样工作的。在cpython2.5中,某些平台(尤其是Windows)的情况似乎有所不同,但我怀疑您使用的是这么旧的Python版本。在也许问题出在纽比身上,但在这种情况下,你可以试试:
或者,您可以调用
numpy.genfromtxt
并使用missing_values
kwarg。在例如,将此数据另存为
data.txt
:您可以这样做(在这种情况下,我们需要将注释标识符设置为默认的“#”之外的值):
^{pr2}$这就产生了:
^{3}$相关问题 更多 >
编程相关推荐