Numpy genfromtxt和loadtxt函数有何区别
在Numpy中,有两个主要用于读取文本文件的函数:genfromtxt
和loadtxt
。这两个函数都可以读取以文本形式存储的数据,具体使用方法如下。
阅读更多:Numpy 教程
genfromtxt
genfromtxt
函数是一个强大的函数,可以自动填充缺失数据或过滤不需要的数据,同时还可以读取各种格式的文件。genfromtxt
的基本语法如下:
其中,参数fname
表示读取的文件名,delimiter
表示分隔符,skip_header
和skip_footer
表示需要跳过的行数(默认为0),dtype
表示读取的数据类型,filling_values
表示缺失值的填充方式,usecols
表示需要读取的列数。
例如,我们有以下文件data.txt
:
我们可以使用genfromtxt
函数读取这个文件:
输出为:
可以看到,genfromtxt
函数自动将缺失值填充为了空字符串。
loadtxt
loadtxt
函数比genfromtxt
函数更简单,但是不能像genfromtxt
函数一样自动填充数据或过滤不需要的数据。loadtxt
的基本语法如下:
其中,参数fname
表示读取的文件名,delimiter
表示分隔符,skiprows
表示需要跳过的行数(默认为0),usecols
表示需要读取的列数,dtype
表示读取的数据类型。
我们可以使用loadtxt
函数读取上面的文件data.txt
:
输出为:
可以看到,loadtxt
函数与genfromtxt
函数的结果一样。
参数unpack
的作用
在使用genfromtxt
或loadtxt
函数读取数据时,有一个非常有用的参数unpack
。该参数的作用是将读取的数组进行转置,变成列向量。例如:
输出为:
可以看到,data
变成了一个二维数组,每一行表示一个属性(姓名、年龄、性别),每一列表示一个数据,即每个人的姓名、年龄和性别。这在机器学习中非常有用,例如我们需要从数据中分离出标签和特征时,使用unpack
参数可以非常方便地进行转置,代码如下:
输出为:
可以看到,使用unpack
参数后,我们可以直接使用切片的方式将数据分离出来,而不用再使用转置操作。
总结
在Numpy中,genfromtxt
和loadtxt
函数都可以读取以文本形式存储的数据,但genfromtxt
函数更强大,可以自动填充缺失数据和过滤不需要的数据,同时还可以读取各种格式的文件。loadtxt
函数比较简单,不能进行自动填充数据或过滤数据的操作。在读取数据时,可以使用参数unpack
将数组转置成列向量的形式,方便进行机器学习中的标签和特征分离操作。