python的numpy loadtxt_关于python中numpy.loadtxt()的详细用法

做数据分析离不开对数据的获取,而常用到的作为数据存储的文件类型有:csv,json,vml,hdf等(本文介绍对csv文件的数据获取方法numpy.loadtxt())。

获取csv文件数据常用到的模块

照自己目前的学习进度,对csv数据的获取通常会用到numpy模块的loadtxt()方法以及在numpy基础上的pandas模块(下篇博客提及).

numpy的loadtxt()方法

numpy.loadtxt()方法的参数有以下这些:

参数作用fname被读取的文件名(文件的相对地址或者绝对地址)dtype指定读取后数据的数据类型comments跳过文件中指定参数开头的行(即不读取)delimiter指定读取文件中数据的分割符converters对读取的数据进行预处理skiprows选择跳过的行数usecols指定需要读取的列unpack选择是否将数据进行向量输出encoding对读取的文件进行预编码

各个参数的详细用法

fname:指定需要读取的CSV文件(从某种意义来说,CSV文件属于txt文件,详细可百度)地址即可完成最简单的读取操作,如下: 创建一个csv文件(test_csv.csv),文件内容是:  使用numpy.loadtxt()读取,此时使用文件的相对地址进行读取:

import numpy as np

csv_array = np.loadtxt('./test_csv.csv',dtype=str)

结果显示为:  考虑到loadtxt()中的dtype参数默认设置为float,这里设置为str字符串便于显示,顺带说一下,dtype参数指定读取后的数据类型,而numpy读取后的数据是一个numpy多维数组的数据类型,下下博客可能介绍。

comments:comments参数指定读取中,跳过以comments参数开头的行,如:类似linux系统的配置文件中用于说明的行,一般用“#”开头,我们就可以用comments参数进行跳过。 (演示需要)建立一个TXT文件test.txt,内容如下:  使用numpy进行读取:

import numpy as np

txt_array = np.loadtxt('./test.txt',dtype=str,comments='#')

print(txt_array)

结果显示为:  delimiter:该参数类似于python处理字符串分割中的split()函数,对数据根据参数进行分割处理。例如fname参数中的文件test_csv.csv,csv文件默认是以逗号分隔数据,在查看文件时没有显示,当没有使用delimiter参数进行分割时,默认是将整个数据一起输出,当使用delimiter参数时:

import numpy as np

csv_array = np.loadtxt('./test_csv.csv',dtype=str,delimiter=',')

print(csv_array)

结果显示为:  结果将数据分行输出了 converters:该参数是将某一列的数据进行函数预处理再获取,格式为:{列号:函数},可以看成一个字典形式,对列上的所有数据进行函数处理 具体过程如下: 先定义一个函数

def _is_num(_str):

if len(_str)>1:

return 'num'

return 'values'

使用converters参数操作文件:

csv_array = np.loadtxt('./test_csv.csv',

dtype=str,

delimiter=',',

converters={1:_is_num})

结果显示为:  skiprows:指定读取时忽略的行数,默认从首行开始计数,也就是说,当我们设置skiprows=1时,列名就会被跳过不读取,这个参数经常被这样使用:

csv_array = np.loadtxt('./test_csv.csv',

dtype=str,

delimiter=',',

converters={1:_is_num},

skiprows=1)

结果显示为:  usecol:usecols参数指定我们需要使用的列,用于提取文件中我们使用的数据,也就是说,平时中我们可能不需要index序列之类的,只要values这一列的数据,如下设置:

csv_array = np.loadtxt('./test_csv.csv',

dtype=str,

delimiter=',',

usecols=1,

skiprows=1)

csv文件的列号是从0开始计数,所以我们在这里将参数设置为1. 结果显示为:  unpack:选择是否将数据向量输出,默认是False,即将数据逐行输出,当设置为True时,数据将逐列输出。

csv_array = np.loadtxt('./test_csv.csv',

dtype=str,

delimiter=',',

unpack=True,

skiprows=1)

结果显示为:  encoding:这个参数是决定读取文件时使用的编码方式,也就是对文件编码方式进行更改,python经常有编码方面的问题出现,关于编码与解码的换一篇博客再讲,在这里就不细说了。

你可能感兴趣的:(python的numpy,loadtxt)