更改文本fi中浮动的一整列无效文本

2024-04-27 16:08:16 发布

您现在位置:Python中文网/ 问答频道 /正文

一个程序运行完毕,生成了一个输出文本文件,我基本上存储了2D矩阵的内容

问题是,由于某种原因,代码运行时出现了一些错误,因此我在文件的整个第二列中得到了奇怪的值,它的“数字”形式为-0.526254956249307482-311

我想替换该列,例如使用

import numpy as np
matrix = np.loadtxt("outputfile.txt", unpack=True)
matrix[1, :] = 0.

这会人为地将该列的值设置为0,我对此很满意

不幸的是,这种方法不起作用

invalid literal for float(): -0.526254956249307482-311

当它遇到文件中的第一个“奇怪”数字时。有什么想法吗

我在下面写了一个文件的小摘录(前三行,只是为了展示它的样子)

    0.100000000000000111E-02   -0.526254956249307482-311 0.764784798622131334E+00    0.262873337864875811E+01    0.208378931879997231E-01    0.833944082260131836E+00   

    0.100000000000000111E-02   -0.526254956199900917-311    0.295833469629287749E+00    0.452671760320663452E+01    0.251516385376453384E-01    0.114372291564941397E+01   

    0.100000000000000111E-02   -0.526254956199900917-311    0.352831211090087915E+00    0.303885749578475917E+01    0.219180066883564000E-01    0.949515032768249556E+00   

Tags: 文件importnumpy程序运行内容as错误np
1条回答
网友
1楼 · 发布于 2024-04-27 16:08:16

您可以为索引1处的列提供自定义转换器,只需为所有值返回零:

import numpy as np
matrix = np.loadtxt('np_nan.txt', unpack=True, converters={1: lambda x: 0})

现在matrix是:

array([[  1.00000000e-03,   1.00000000e-03,   1.00000000e-03],
       [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
       [  7.64784799e-01,   2.95833470e-01,   3.52831211e-01],
       [  2.62873338e+00,   4.52671760e+00,   3.03885750e+00],
       [  2.08378932e-02,   2.51516385e-02,   2.19180067e-02],
       [  8.33944082e-01,   1.14372292e+00,   9.49515033e-01]])

您也可以考虑使用Na而不是零:

matrix = np.loadtxt('np_nan.txt', unpack=True, converters={1: lambda x: np.nan})

现在matrix是:

array([[  1.00000000e-03,   1.00000000e-03,   1.00000000e-03],
       [             nan,              nan,              nan],
       [  7.64784799e-01,   2.95833470e-01,   3.52831211e-01],
       [  2.62873338e+00,   4.52671760e+00,   3.03885750e+00],
       [  2.08378932e-02,   2.51516385e-02,   2.19180067e-02],
       [  8.33944082e-01,   1.14372292e+00,   9.49515033e-01]])

相关问题 更多 >