读取 CSV 文件

可用的三个主要功能(手册页中的描述):

fromfile - 一种使用已知数据类型读取二进制数据的高效方法,以及解析简单格式化的文本文件。使用 tofile 方法写入的数据可以使用此函数读取。

genfromtxt - 从文本文件加载数据,并按指定处理缺失值。超过第一个 skip_header 行的每一行将以分隔符分割,并且将丢弃注释字符后面的字符。

loadtxt - 从文本文件加载数据。文本文件中的每一行必须具有相同数量的值。

genfromtxtloadtxt 的包装函数。genfromtxt 是最直接使用的,因为它有许多参数来处理输入文件。

一致的列数,一致的数据类型(数字或字符串):

给定一个输入文件,myfile.csv 的内容为:

#descriptive text line to skip
1.0, 2, 3
4, 5.5, 6

import numpy as np
np.genfromtxt('path/to/myfile.csv',delimiter=',',skiprows=1)

给出一个数组:

array([[ 1. ,  2. ,  3. ],
       [ 4. ,  5.5,  6. ]])

列数一致,混合数据类型(跨列):

1   2.0000  buckle_my_shoe
3   4.0000  margery_door

import numpy as np
np.genfromtxt('filename', dtype= None)

array([(1, 2.0, 'buckle_my_shoe'), (3, 4.0, 'margery_door')], 
dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '|S14')])

注意 dtype=None 的使用导致重新排列。

列数不一致:

file:1 2 3 4 5 6 7 8 9 10 11 22 13 14 15 16 17 18 19 20 21 22 23 24

进入单行数组:

result=np.fromfile(path_to_file,dtype=float,sep="\t",count=-1)