【问题标题】:import text file as matrix in numpy在numpy中将文本文件作为矩阵导入
【发布时间】:2015-04-14 13:56:54
【问题描述】:

我对 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

【问题讨论】:

    标签: python numpy matrix


    【解决方案1】:

    使用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

    【讨论】:

    • 正是我想要的!谢谢。还有一个问题:我怎样才能只得到每行的前四个元素?或者也许只得到二到四列?我怎样才能使用范围属性呢?
    • Dang,我正要发布我的解决方案,但后来我注意到了您的解决方案,而且您的解决方案要好得多... ;)
    • @user3687 参数usecols 可以是任何序列,所以usecols=(0,1,2,3) 是前4 行,usecols=(1,2,3) 是第2-4 列等(注意Python 的从零开始的索引)。跨度>
    • @xnx 如果我不知道列数但希望 numpy 从换行符中找到它,语法是什么?
    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多