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

Posted

技术标签:

【中文标题】如何将不同类型的数据从文件导入 Python Numpy 数组?【英文标题】:How do I import data with different types from file into a Python Numpy array? 【发布时间】:2013-03-07 01:36:15 【问题描述】:

假设我有一个文件myfile.txt,其中包含:

1   2.0000  buckle_my_shoe
3   4.0000  margery_door

如何将文件中的数据作为 int、float 和 string 导入 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 个空格分解这些内部。否则,您也可以只使用正则表达式来查找每一行并将它们拆分(组)。 我认为更重要的问题是您将如何处理这些数据导入后。虽然您可以使用numpy 处理非数字数据,但如果您想用它做任何有趣的事情,您可能最终会重新发明pandas 的一些部分...... 更多基本解释你可能想看看***.com/a/10940038/2062965 【参考方案1】:

Pandas 可以为您做到这一点。您可以使用的函数的文档是 here。

假设您的列是制表符分隔的,这应该可以解决问题(改编自 this question):

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

【讨论】:

【参考方案2】:

使用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')])

【讨论】:

以上是关于如何将不同类型的数据从文件导入 Python Numpy 数组?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 将特定列数据从 CSV 导入不同的 MYSQL 表

如何将导入 python 的数据从 csv 文件转换为时间序列?

如何将具有不同名称和相同架构的 Excel 文件导入数据库?

如何从多个不同来源导入和合并相似(但不相等)的文本

Python 导入其他文件中的类

导入SQLSERVER备份文件问题,谢谢!