使用string读取文件并使用loadtxt浮动

时间:2011-12-24 11:22:52

标签: python numpy

我需要使用python读取this page处可用的数据集。

他们非常精确地定义每列的数据类型。 如何使用loadtxt(这是一个numpy函数)来读取此数据集。我尝试在dtype选项中提供数据类型但它不起作用。

2 个答案:

答案 0 :(得分:3)

您链接的网站中的表格彼此非常不同,并且您在不同的列中有不同的类型。

您需要为每张桌子定义record type 记录类型允许您在同一个数组上声明字符串,整数,浮点数。它的定义和使用方式与此示例类似:

>>> recordtype = dtype([('name', str_, 20), ('age', int32), ('weight', float32)])
>>> people = array([('Joaquin', 51, 60.0), ('Cat', 18, 8.6)], dtype=recordtype)
>>> people
array([('Joaquin', 51, 60.0), ('Cat', 18, 8.600000381469727)], dtype=[('name', '<U20'), ('age', '<i4'), ('weight', '<f4')])

另一方面,您拥有包含'...'等内容的行,这些内容会破坏其上的数据的一致性。因此,如果您需要直接从文件中读取,则需要使用转换器函数来实现loadtxt转换器参数。

或者,由于loadtext还接受一个生成器作为输入,您可以处理生成器中的行并使用清理的行提供loadtext。

最后,您还应该设置skiprows参数以消除表格标题

答案 1 :(得分:0)

如果你只想要一个包含字符串列的文件中的浮点数,但是其他方法很好,一个方便的解决方案是使用像

这样的东西
load = numpy.loadtxt('file.dat', usecols=(2,3,7))

其中第2,3和7列具有浮点数,并分别成为load[:,0]load[:,1]load[:,2]