使用 Numpy 导入数据时排除某些行
Excluding certain rows while importing data with Numpy
我正在从实验中生成数据集。我最终得到的 csv 数据集通常是 n x 4
维(n
行;n > 1000
和 4
列)。但是,由于数据收集过程的人为因素,通常前几行和最后几行只有 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 行)后,导入工作正常。
两个问题:
为什么通常的导入不起作用。我不确定此导入中的确切错误是什么。换句话说,为什么所有行中的列数不同不是问题?
作为解决方法,我知道如何在使用 numpy np.loadtxt(filename, skiprows= 2)
导入文件时忽略前两行,但是是否有一种简单的方法也可以 select 固定要忽略的底部行数?
注意:这与在 numpy 数组中查找唯一行无关。更多关于导入每行包含的列数不均匀的 csv 数据。
您的问题与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)
希望对您有所帮助!
您可以使用 genfromtxt
,它允许跳过开头 和结尾 的行:
np.genfromtxt('array.txt', delimiter=',', skip_header=2, skip_footer=3)
我正在从实验中生成数据集。我最终得到的 csv 数据集通常是 n x 4
维(n
行;n > 1000
和 4
列)。但是,由于数据收集过程的人为因素,通常前几行和最后几行只有 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 行)后,导入工作正常。
两个问题:
为什么通常的导入不起作用。我不确定此导入中的确切错误是什么。换句话说,为什么所有行中的列数不同不是问题?
作为解决方法,我知道如何在使用 numpy
np.loadtxt(filename, skiprows= 2)
导入文件时忽略前两行,但是是否有一种简单的方法也可以 select 固定要忽略的底部行数?
注意:这与在 numpy 数组中查找唯一行无关。更多关于导入每行包含的列数不均匀的 csv 数据。
您的问题与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)
希望对您有所帮助!
您可以使用 genfromtxt
,它允许跳过开头 和结尾 的行:
np.genfromtxt('array.txt', delimiter=',', skip_header=2, skip_footer=3)