【问题标题】:Auto convert strings and float columns using genfromtxt from numpy/python使用 numpy/python 中的 genfromtxt 自动转换字符串和浮点列
【发布时间】:2016-09-28 13:48:06
【问题描述】:

我有几个不同的数据文件需要使用 genfromtxt 导入。每个数据文件都有不同的内容。例如,文件 1 可能包含所有浮点数,文件 2 可能包含所有字符串,文件 3 可能包含浮点数和字符串等的组合。此外,列数因文件而异,由于有数百个文件,我不知道每个文件中哪些列是浮点数和字符串。但是,每列中的所有条目都是相同的数据类型。

有没有办法为 genfromtxt 设置一个转换器来检测每列中的数据类型并将其转换为正确的数据类型?

谢谢!

【问题讨论】:

  • 你会用熊猫吗? pandas.readcsvnumpy.genfromtxt 强大得多,并且会自动为您完成所有这些工作。
  • 问题是我需要能够将输出转换为 numpy 数组以进行进一步处理。我听说 datafame.as_matrix() 返回一个对象数组。所以我更喜欢使用 genfromtxt。
  • dataframe.to_records() 会给你一个记录数组,这可能就是你想要的。在 numpy 数组中存储混合类型只能通过记录数组或对象数组来完成。
  • 是的,这行得通!谢谢!
  • 好的——我添加了一个完整的答案

标签: python numpy type-conversion genfromtxt


【解决方案1】:

如果您能够使用 Pandas 库,pandas.read_csvnp.genfromtxt 更普遍有用,并且会自动处理您问题中提到的类型推断。结果将是一个数据框,但您可以通过以下几种方式之一获取一个 numpy 数组。例如

import pandas as pd
data = pd.read_csv(filename)

# get a numpy array; this will be an object array if data has mixed/incompatible types
arr = data.values

# get a record array; this is how numpy handles mixed types in a single array
arr = data.to_records()

pd.read_csv有几十种不同形式的文本输入选项;在pandas.read_csv documentation 中查看更多信息。

【讨论】:

    猜你喜欢
    • 2016-01-18
    • 1970-01-01
    • 2019-10-31
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多