所以我有一个“ 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
您可以从删除以下困扰您的行开始:
>>> 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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。