开发者社区> 问答> 正文

Python如何使用文本文件创建4 x 4矩阵

所以我有一个“ txt”文件,我想用它创建4 x 4矩阵。我需要将它们与每个“ 4 4”分开。我该怎么做?“ input.txt”文件包含以下内容:

4 4
55 55 55 56
66 66 66 67
77 77 77 78
88 88 88 89
4 4
1 2 3 4
2 2 2 2
3 3 3 3
4 4 4 4
4 4
11 12 13 14
22 24 24 25
33 34 35 36
44 45 46 47

就像我说的那样,我必须制作单个矩阵,每个矩阵都以“ 4 4”结尾。我如何将它们与那里分开?我尝试使用一些方法,但仍然无法做到。感谢您花费时间阅读此问题。我尝试了以下操作:

[i.lower().replace('4 4', '').split() for i in open('input.txt', 'r')]

输出是这样的:

[[],
 ['55', '55', '55', '56'],
 ['66', '66', '66', '67'],
 ['77', '77', '77', '78'],
 ['88', '88', '88', '89'],
 [],
 ['1', '2', '3', '4'],
 ['2', '2', '2', '2'],
 ['3', '3', '3', '3'],
 [],
 [],
 ['11', '12', '13', '14'],
 ['22', '24', '24', '25'],
 ['33', '34', '35', '36'],
 ['45', '46', '47']]

如您所见,这不是我想要的确切东西。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 21:52:58 890 0
1 条回答
写回答
取消 提交回答
  • 您可以从删除以下困扰您的行开始:

    >>> lines = [line for line in text_file.splitlines() if line != "4 4"]
    

    然后为每个大块连续4行创建矩阵:

    >>> [np.fromstring("\n".join(lines[x:x+4]), sep=" ", dtype=int).reshape(4,4) 
         for x in range(0, len(lines), 4)]
    

    哪个输出是大小为(4,4)的矩阵的列表:

    [array([[55, 55, 55, 56],
           [66, 66, 66, 67],
           [77, 77, 77, 78],
           [88, 88, 88, 89]]), 
    
     array([[1, 2, 3, 4],
           [2, 2, 2, 2],
           [3, 3, 3, 3],
           [4, 4, 4, 4]]), 
    
     array([[11, 12, 13, 14],
           [22, 24, 24, 25],
           [33, 34, 35, 36],
           [44, 45, 46, 47]])]
    

    回答来源:stackoverflow

    2020-03-24 21:53:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载