如何将不同类型的数据从文件导入到Python Numpy数组中?

20

假设我有一个文件myfile.txt,里面包含:

1   2.0000  buckle_my_shoe
3   4.0000  margery_door

如何将文件中的数据导入为numpy数组并分别指定为整数、浮点数和字符串?

我的目标是获得以下结果:

array([[1,2.0000,"buckle_my_shoe"],
[3,4.0000,"margery_door"]])
我一直在尝试以下内容,但无济于事:
a = numpy.loadtxt('myfile.txt',dtype=(numpy.int_,numpy.float_,numpy.string_))

编辑:另一种方法可能是使用ndarray类型,然后转换。


b = numpy.loadtxt('myfile.txt',dtype=numpy.ndarray)

    array([['1', '2.0000', 'buckle_my_shoe'],
       ['3', '4.0000', 'margery_door']], dtype=object)

只需将文件读取为字符串,按每个\n换行符拆分字符串,并使用3个和2个空格来拆分内部。否则,您也可以使用正则表达式找到每行并将其拆分(分组)。 - user1467267
2
我认为更重要的问题是在导入数据后你将如何处理它。虽然你可以使用 numpy 处理非数值数据,但如果你想对其进行有趣的操作,你可能最终会不得不重新发明 pandas 的某些部分。 - DSM
如果您需要更基础的解释,您可能需要查看https://dev59.com/7GTWa4cB1Zd3GeqPGLg9#10940038。 - strpeter
2个回答

19

使用 numpy.genfromtxt

import numpy as np
np.genfromtxt('filename', dtype= None)
# array([(1, 2.0, 'buckle_my_shoe'), (3, 4.0, 'margery_door')], 
#       dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '|S14')])

7

Pandas可以为您完成这项任务。您可以使用的函数文档在这里

假设您的列是以制表符分隔的,那么这个方法就能帮到您(改编自这个问题):

df = DataFrame.from_csv('myfile.txt', sep='\t')
array = df.values # the array you are interested in

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接