np.loadtxt()
用于从文本加载数据。文本文件中的每一行必须含有相同的数据。
loadtxt(fname, dtype=
fname
要读取的文件、文件名、或生成器。dtype
数据类型,默认float。还可以控制每一列的数据类型和精度等信息。comments
注释。delimiter
分隔符,默认是空格。skiprows
跳过前几行读取,默认是0,必须是int整型。usecols
:要读取哪些列,0是第一列。例如,usecols = (1,4,5)将提取第2,第5和第6列。默认读取所有列。unpack
如果为True
,将分列读取。numpy中有两个函数可以用来读取文件,主要是txt文件, 下面主要来介绍这两个函数的用法
第一个是loadtxt, 其一般用法为
numpy.loadtxt(fname, dtype=, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
上面给出了loadtxt所有的关键字参数, 这里我们可以来一一解释并给出示例
这里我们使用的是jupyter notebook, 可以实现交互式的界面操作
?
1 2 3 4 5 |
|
首先给出最简单的loadtxt的代码
?
1 2 3 |
|
实际上就是直接写文件名, 其他关键字参数都是默认的。输出为
[[1. 2. 3. 4.]
[2. 3. 4. 5.]
[3. 4. 5. 6.]
[4. 5. 6. 7.]]
a为浮点数的原因为Python默认的数字的数据类型为双精度浮点数
?
1 2 3 4 5 6 7 8 |
|
这里的skiprows是指跳过前1行, 如果设置skiprows=2, 就会跳过前两行, 这里的输出为
[[1 2 3]
[4 5 6]
[7 8 9]]
?
1 2 3 4 5 6 7 8 9 |
|
这里的comment的是指, 如果行的开头为#就会跳过该行, 这里输出为
[[1 2 3]
[4 5 6]
[7 8 9]]
?
1 2 3 4 5 6 7 8 9 |
|
这里的usecols是指只使用0,2两列, unpack是指会把每一列当成一个向量输出, 而不是合并在一起。
[1 4 7] [3 6 9]
最后介绍converters参数, 这个是对数据进行预处理的参数, 我们可以先定义一个函数, 这里的converters是一个字典, 表示第零列使用函数add_one来进行预处理
?
1 2 3 4 |
|
输出结果为:
[2 5 8] [3 6 9]