使用 Genfromtxt 导入数据

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用 numpy.genfromtxt 函数导入数据。此函数使我们能够从各种来源读取表格数据并将其转换为 NumPy 数组。我们将探索定义输入、将行拆分为列、选择列、设置数据类型以及调整转换的不同选项。

注意:你可以在 03-io-genfromtxt.ipynb 中编写代码。步骤中省略了一些打印操作,你可以根据需要打印输出。

导入所需库

首先,让我们导入必要的库。我们将使用 numpy 库来创建数组,并使用 io 库中的 io 模块来创建类文件对象。

import numpy as np
from io import StringIO

定义输入

numpy.genfromtxt 函数要求将数据来源作为唯一的必需参数。它可以是一个字符串、字符串列表、生成器或具有 read 方法的类文件对象。

data = "1, 2, 3\n4, 5, 6"

将各行拆分为列

delimiter 参数用于定义各行应如何拆分为列。默认情况下,numpy.genfromtxt 假定 delimiter=None,这意味着该行将按空白字符(包括制表符)进行拆分。

np.genfromtxt(StringIO(data), delimiter=",")

选择列

usecols 参数用于选择要导入哪些列。它接受一个整数或一个整数序列,这些整数对应于要导入的列的索引。

np.genfromtxt(StringIO(data), usecols=(0, -1))

设置数据类型

dtype 参数用于控制字符串如何转换为其他类型。它可以是单个类型、类型序列、逗号分隔的字符串、字典、元组序列、现有的 numpy.dtype 对象,或者为 None 以根据数据本身确定类型。

np.genfromtxt(StringIO(data), dtype=float)

调整转换

converters 参数允许我们定义转换函数来处理更复杂的转换。它接受一个字典,其中列索引或列名作为键,转换函数作为值。

convertfunc = lambda x: float(x.strip(b"%"))/100.
np.genfromtxt(StringIO(data), converters={1: convertfunc})

使用缺失值和填充值

missing_valuesfilling_values 参数用于处理缺失数据。missing_values 参数用于识别缺失数据,而 filling_values 参数用于为缺失的条目提供一个值。

np.genfromtxt(StringIO(data), missing_values="N/A", filling_values=0)

使用快捷函数

numpy.lib.npyio 模块提供了从 numpy.genfromtxt 派生而来的快捷函数。这些函数具有不同的默认值,并返回标准的 NumPy 数组或掩码数组。

from numpy.lib.npyio import recfromtxt

recfromtxt(StringIO(data), delimiter=",")

总结

在本实验中,我们学习了如何使用 numpy.genfromtxt 函数导入数据。我们探讨了定义输入、将行拆分为列、选择列、设置数据类型以及调整转换的不同选项。我们还了解了 numpy.lib.npyio 模块提供的快捷函数。