在numpy中将文本文件导入为矩阵

10

我非常新手Python编程,对于大多数专业人员来说,这可能看起来非常简单。我有一个文本文件,格式如下。我想将数字导入矩阵中。也就是说,我不想要空格(每行开头也有一个空格)和数据标签。

 1 1 1 1 1 1 1 data_1
 1 1 1 1 1 1 2 data_2
 1 1 1 1 1 2 1 data_3
 1 1 1 1 1 2 2 data_4
 1 1 1 1 1 3 1 data_5
 1 1 1 1 1 3 2 data_6
1个回答

24

使用numpy.loadtxt函数,默认情况下假定数据是由空格分隔的,并且使用一个参数usecols指定在构建数组时要使用哪些字段:

In [1]: import numpy as np
In [2]: matrix = np.loadtxt('matrix.txt', usecols=range(7))
In [3]: print matrix

[[ 1.  1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.  2.]
 [ 1.  1.  1.  1.  1.  2.  1.]
 [ 1.  1.  1.  1.  1.  2.  2.]
 [ 1.  1.  1.  1.  1.  3.  1.]
 [ 1.  1.  1.  1.  1.  3.  2.]]
如果您希望矩阵元素为整数,请同时将 dtype=int 传递给 loadtxt

正是我所需要的!谢谢。还有一个问题:如何仅获取每行的前四个元素?或者只获取第二到第四列?我该如何使用range属性实现这一点? - Rashid
1
哎呀,我正准备发布我的解决方案,但是我注意到你的解决方案比我的好多了... ;) - chw21
@user3687 参数 usecols 可以是任何序列,因此 usecols=(0,1,2,3) 表示前4行,usecols=(1,2,3) 表示第2-4列等(请注意 Python 的从零开始的索引)。 - xnx
如果我不知道列数,但想让numpy从换行符中找到它,应该怎么写语法? - soumyadip.ghosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接