Numpy 如何使用numpy.loadtxt()函数将文本文件读取为字符串
NumPy是Python中用于数学和科学计算的扩展包。它提供了高效的矩阵操作功能,数值计算以及线性代数等科学计算的基础工具。读取数据文件是数据分析中的关键任务,而NumPy提供了许多用于读取文本文件的函数,其中包括numpy.loadtxt()。本文将介绍如何使用numpy.loadtxt()函数将文本文件读取为字符串。
阅读更多:Numpy 教程
numpy.loadtxt()函数简介
numpy.loadtxt()函数旨在从包含数据集的文本文件中加载数据。它返回一个二维数组,其中每个单元格表示文本文件中的一个数据元素。它有许多可选参数,例如数据分隔符、数据类型等。以下是基本的numpy.loadtxt()函数的语法:
numpy.loadtxt(fname, delimiter=None, dtype='float', comments='#', skiprows=0, usecols=None, unpack=False, ndmin=0)
其中:
fname
:要读取的文件名delimiter
:数据分隔符,默认为任何空格dtype
:返回数组的数据类型,默认为float
comments
:指定注释的字符,默认为#
skiprows
:要跳过的行数,默认为0
usecols
:要读取的列,可以是整数或可迭代对象。默认为所有列。unpack
:如果为True
,则返回每列作为单独的数组,否则返回一个二维数组。
现在我们将讨论如何将文本文件读取为字符串。
将文本文件读取为字符串
numpy.loadtxt()函数读取文件的默认数据类型是float
类型。但是,我们可以使用numpy.loadtxt()函数来读取文本文件并将其加载为字符串类型,如下所示:
import numpy as np
filename = 'example.txt'
data = np.loadtxt(filename, dtype=np.str)
print(data)
上述代码将从文件名为example.txt
的文件中加载数据,并将其返回为字符串类型的NumPy数组。它将打印NumPy数组,如下所示:
[['John' '30' 'harvard']
['Doe' '23' 'MIT']
['Jane' '25' 'stanford']]
上面输出的结果中,三行数据均为字符串类型,并且每个数据元素之间都用空格分隔。这是因为没有指定数据分隔符。接下来,我们将使用numpy.loadtxt()函数的其他参数来加载文本文件,并将其加载为字符串类型的NumPy数组。
1. 指定数据分隔符
默认情况下,numpy.loadtxt()将数据分隔符设置为任何空格字符。然而,您可以使用delimiter
参数来指定自定义数据分隔符。例如,以下代码将从文件名为example2.txt
的文件中加载数据,并将其返回为字符串类型的NumPy数组。它将使用逗号作为自定义分隔符:
import numpy as np
filename = 'example2.txt'
data = np.loadtxt(filename, dtype=np.str, delimiter=',')
print(data)
上述代码将使用逗号作为分隔符,读取名为example2.txt
的文件,然后将其作为字符串类型的NumPy数组返回并打印,如下所示:
[['John' '30' 'harvard']
['Doe' '23' 'MIT']
['Jane' '25' 'stanford']]
2. 跳过特定行
使用numpy.loadtxt()函数读取文本文件时,有时您可能需要跳过文件中的前几行。例如,这可能是因为文件的前几行包含文件描述或标题。此时,skiprows
参数可用于跳过一定数量的行。例如,以下代码将从文件名为example3.txt
的文件中加载数据,并将其返回为字符串类型的NumPy数组。它会跳过第一行和第三行,然后使用逗号作为自定义分隔符:
import numpy as np
filename = 'example3.txt'
data = np.loadtxt(filename, dtype=np.str, delimiter=',', skiprows=[0, 2])
print(data)
上述代码将从文件名为example3.txt
的文件中加载数据,并在跳过第一行和第三行之后,使用逗号作为分隔符将其返回为字符串类型的NumPy数组,并打印出来,如下所示:
[['John' '30' 'harvard']
['Jane' '25' 'stanford']]
3. 选择特定列
有时您只需要加载文件中的特定列。在这种情况下,usecols
参数可用于选择文件中的特定列。例如,以下代码将从文件名为example4.txt
的文件中加载数据,并将其返回为字符串类型的NumPy数组。它将只选择第一列和第三列作为需要加载的列:
import numpy as np
filename = 'example4.txt'
data = np.loadtxt(filename, dtype=np.str, delimiter=',', usecols=[0, 2])
print(data)
上述代码将从文件名为example4.txt
的文件中加载数据,并返回一个由第一列和第三列组成的字符串类型的NumPy数组,并将它们用逗号分隔并打印出来,如下所示:
[['John' 'harvard']
['Doe' 'MIT']
['Jane' 'stanford']]
4. 剖析引用文本数据
有时候您会遇到包含引用的文本数据文件。例如,在下面的引用文本文件示例中,每个数据元素都用引号引起来。
"John", "30", "harvard"
"Doe", "23","MIT"
"Jane", "25", "stanford"
这时,我们可以使用带有delimiter
和quoting
参数的numpy.loadtxt()函数来读取引用数据。quoting
参数的值,默认为0(不引用)。当设置为1时,您可以解析双引号中的引用元素。例如,以下代码将从名为example5.txt
的引用文本文件中读取引用元素,并将其返回为字符串类型的NumPy数组:
import numpy as np
filename = 'example5.txt'
data = np.loadtxt(filename, dtype=np.str, delimiter=',', quoting=1)
print(data)
上述代码将从名为example5.txt
的文件中读取引用元素,并将其返回为字符串类型的NumPy数组。打印结果如下所示:
[['John' '30' 'harvard']
['Doe' '23' 'MIT']
['Jane' '25' 'stanford']]
总结
在本文中,我们介绍了numpy.loadtxt()函数以及如何将文本文件读取为字符串类型的NumPy数组。我们已经展示了如何指定自定义分隔符、跳过特定行、选择特定列以及解析引用文本数据。了解这些技巧将使您在数据分析中更方便和高效地读取和处理文本文件。