python将txt文件读入为np.array的方法
在Python编程中,有时我们需要将数据从文本文件中读取并转换为NumPy数组,以便进行数值计算或数据分析。本文将详细介绍如何使用Python和NumPy库将TXT文件中的数据读入为np.array。 我们要引入NumPy库,它是Python中用于科学计算的核心库,提供了多维数组对象和矩阵运算等功能。在代码开始时,我们导入NumPy库并指定编码为UTF-8: ```python # -*- coding: utf-8 -*- import numpy as np ``` 接下来,定义一个名为`readFile`的函数,它接受一个参数`path`,表示TXT文件的路径。函数的主要任务是打开文件,读取每一行,并将数据转换为NumPy数组。 ```python def readFile(path): f = open(path) ``` 在`readFile`函数中,我们使用`for`循环逐行读取文件内容。使用`strip()`方法去除每行末尾的换行符(`\n`)。然后,使用`split(',')`根据逗号将数据分割成多个字符串。这些字符串代表单个浮点数,因为数据是按照逗号分隔的。 ```python first_ele = True for data in f.readlines(): data = data.strip('\n') nums = data.split(',') ``` 将数据添加到一个二维数组(矩阵)中。由于数据可能包含多列,我们需要在每次迭代中将新行的数据与已有矩阵横向连接(`np.c_[]`),并将第一行作为初始矩阵。之后,我们将矩阵转置,确保每列数据对应于文件中的同一列。 ```python if first_ele: matrix = np.array(nums) first_ele = False else: matrix = np.c_[matrix, nums] matrix = matrix.transpose() ``` 为了得到最终的np.array,我们将矩阵每一行的数据转换为浮点数并存储到列表`a`中,然后再将这个列表转换为数组。 ```python a = [] for x in range(0, 125): result = [float(item) for item in matrix[x]] a.append(result) arr = np.array(a) ``` 关闭文件以释放资源。 ```python f.close() ``` 打印数组并返回结果。 ```python print(arr) return arr ``` 在测试部分,我们通过`if __name__ == '__main__'`检查是否直接运行脚本,如果是,则调用`readFile`函数并传入文件路径。 ```python if __name__ == '__main__': readFile("~/s01.txt") ``` 输出显示了一个二维数组,其中包含了TXT文件中的所有数据。这种将TXT文件数据读入为NumPy数组的方法适用于处理结构化的数据集,特别是当数据是以逗号分隔的浮点数时。这使得我们可以利用NumPy提供的各种数学和统计功能来分析和处理数据。