numpy 加载本地文件

加载本地文件

1.loadtxt

fname="/path..."#本地文件路径:文件、字符串或产生器,可以是.gz或bz2压缩文件

np.loadtxt(fname,dtype=np.float,delimitet=None,skiprows=0,usecols=None,unpack=False)

变量 说明
dtype 数据类型,可选,CSV的字符串以什么数据类型读入数组中,默认np. float
delimiter 分隔符,默认是任何空格
skiprows 跳过前x行,一般跳过第一行表头
usecols 读取指定的列,索引,元组类型
unpack 如果True,读入属性将分别写入不同数组变量,False 读入数据只写入一个数组变量,默认False

详情请参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html#numpy.loadtxt

2.genfromtxt

注:   genfromtxt的唯一强制参数是数据的来源。它可以是一个字符串,一串字符串或一个生成器。如果提供了单个字符串,则假定它是本地或远程文件的名称,或者带有read方法的开放文件类对象,例如文件或StringIO.StringIO对象。如果提供了字符串列表或生成器返回字符串,则每个字符串在文件中被视为一行。当传递远程文件的URL时,该文件将自动下载到当前目录并打开。
         识别的文件类型是文本文件和档案。目前,该功能可识别gzipbz2(bzip2)档案。归档文件的类型由文件的扩展名决定:如果文件名以'.gz'结尾,则需要一个gzip归档文件;如果它以'bz2'结尾,则假定bzip2存档。

一旦文件被定义并打开进行读取,genfromtxt会将每个非空行分割为一串字符串。 空的或注释的行只是略过。 delimiter关键字用于定义拆分应该如何进行。

import numpy as np
from io import BytesIO
data = "1, 2, 3\n4, 5, 6"
#np.genfromtxt(BytesIO(data), delimiter=",")
#python3 BytesIO(object),支持byte对象,不支持str对象
np.genfromtxt(BytesIO(data.encode('utf-8')), delimiter=",") 

genfromtxt自定义划分方式:
#日期数据
data = "20150228\n20161223"  
np.genfromtxt(BytesIO(data.encode('utf-8')), delimiter=(4,2,2),dtype='int')

跳过直线并选择列

#skip_headerskip_footer参数

文件中存在标题可能会妨碍数据处理。在这种情况下,我们需要使用skip_header可选参数。此参数的值必须是一个整数,与执行任何其他操作之前在文件开头跳过的行数相对应。同样,我们可以使用skip_footer属性跳过文件的最后一行n,并给它一个n的值:

 np.genfromtxt(BytesIO(data),skip_header=3, skip_footer=5)

#usecols参数,选择要读取的列
其他参数请参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html?highlight=genfromtxt#numpy.genfromtxt

 

你可能感兴趣的:(日常总结,Python)