用0填充空白列空间

时间:2017-08-06 22:01:40

标签: python numpy replace zero

我正在尝试将txt文件中的空白列空格替换为0。

  1. 2 6
  2. 4 8
  3. 6
  4. 我尝试了以下方法。

    import numpy as np
    data=np.loadtxt('/Users/Hrihaan/Desktop/A_1.txt')
    data[data==''] = '0'
    

    收到此信息:ValueError:第3行的列数错误。

    我的值不以逗号分隔,所以我也尝试了以下内容。

    data[data== ] = 0
    

    此时收到的错误不同:SyntaxError:语法无效

    我的预期输出如下:

    1. 2 6
    2. 4 8
    3. 6 0
    4. 任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

numpy.loadtxt文档建议(在备注中):

  

此功能旨在成为简单格式化文件的快速阅读器。 genfromtxt函数提供了更复杂的处理,例如,缺少值的行。

但是,genfromtxt中“缺失值”的处理并将其替换为“填充值”仅适用于已知的“缺失值”,例如x代替数字。

那不是你的情况。您有一个缺少字段的文件,这些numpy方法无法处理它。您可以手动解析并加载文件,或者,如果可以接受,请使用pandas.read_table,如下所示:

>>> import pandas as pd
>>> pd.read_table('/path/to/file', dtype=float, header=None, sep='\s+').fillna(0).values
array([[ 2.,  6.],
       [ 4.,  8.],
       [ 6.,  0.]])

read_table()将使用NaN替换缺失值,我们可以使用fillna方法将其替换为零。可以使用numpy.array访问底层.values