使用Numpy导入数据时排除某些行

时间:2017-01-18 00:01:03

标签: python numpy file-import

我正在通过实验生成数据集。我最终得到的csv数据集通常是n x 4维(n行; n > 10004列)。但是,由于数据收集过程的工件,通常前几行和最后几行只有2或3列。所以数据集看起来像:

8,0,4091
8,0,
8,0,4091,14454
10,0,4099,14454
2,0,4094,14454
8,-3,4104,14455
3,0,4100,14455
....
....
14,-1,4094,14723
0,3,4105,14723
7,0,4123,14723
7,
6,-2,4096,
3,2,

如您所见,前两行和后三行没有我期望的4列。当我尝试使用np.loadtxt(filename, delimiter = ',')导入此文件时,出现错误。删除少于4列的行(前2行,最后3行,在本例中),导入工作正常。

两个问题:

  1. 为什么不通常的导入工作。我不确定这次导入的确切错误是什么。换句话说,为什么在所有行中没有相同数量的列是个问题?

  2. 作为一种解决方法,我知道在使用numpy np.loadtxt(filename, skiprows= 2)导入文件时如何忽略前两行,但有一种简单的方法可以在底部选择固定数量的行来忽略

  3. 注意:这不是在numpy数组中查找唯一行。它更多的是导入每行包含的列数不均匀的csv数据。

2 个答案:

答案 0 :(得分:1)

您的问题与Using genfromtxt to import csv data with missing values in numpy

类似(重复)

1)我不确定这是默认行为的原因。

  • 可能是警告用户CSV文件可能已损坏。
  • 可以优化数组并使其成为 N x M ,而不是具有多个列长。

2)使用numpy的genfromtext。为此,您需要提前知道正确的列数。

data = numpy.genfromtxt('data.csv', delimiter=',', usecols=[0,1,2,3], invalid_raise=False)

希望这有帮助!

答案 1 :(得分:1)

您可以使用genfromtxt,它允许在结尾处跳过的行:

np.genfromtxt('array.txt', delimiter=',', skip_header=2, skip_footer=3)