python - 将数字读入网格
问题描述
我有一个数字网格,看起来像这样,并且持续了一段时间。
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
我将此网格保存在一个 .txt 文件中,并将其分配给一个文件变量,如下所示:
grid = open("grid.txt" )
print(grid.readlines())
grid.close()
当我打印出网格的内容时grid.readlines()
弹出一些问题:首先,它被保存为一个长字符串列表(即每一行都是一个列表条目,其次,\n
每个列表条目的末尾都有换行符。最后, 要将这些数据转换成网格一样的numpy数组,数字不能以零开头。即第一行第二列中的02应该是2。
我对 numpy 很陌生。有什么方法可以将这些数据转换为一个 numpy 数组,这样可以节省我在代码中手动实现编辑版本的所有繁琐工作?我知道的唯一 python 读取可能性是 csv 或 excel 文件。
祝大家最好的日子:)
解决方案
一些注意事项:
- 确保您使用
open()
的是关键字with
。参考这里。
在处理文件对象时,最好使用 with 关键字。优点是文件在其套件完成后正确关闭,即使在某个时候引发了异常。
- 您可以使用
str.splitlines()
来实现这一点。
with open('file.txt') as f:
lines = f.read().splitlines()
print(lines)
输出:
['08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08', '49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00', '81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65', '52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91', '22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80', '24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50', '32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70', '67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21', '24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72', '21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95']
import numpy as np
file = np.loadtxt('file.txt')
print(file)
array([[ 8., 2., 22., 97., 38., 15., 0., 40., 0., 75., 4., 5., 7.,
78., 52., 12., 50., 77., 91., 8.],
[49., 49., 99., 40., 17., 81., 18., 57., 60., 87., 17., 40., 98.,
43., 69., 48., 4., 56., 62., 0.],
[81., 49., 31., 73., 55., 79., 14., 29., 93., 71., 40., 67., 53.,
88., 30., 3., 49., 13., 36., 65.],
[52., 70., 95., 23., 4., 60., 11., 42., 69., 24., 68., 56., 1.,
32., 56., 71., 37., 2., 36., 91.],
[22., 31., 16., 71., 51., 67., 63., 89., 41., 92., 36., 54., 22.,
40., 40., 28., 66., 33., 13., 80.],
[24., 47., 32., 60., 99., 3., 45., 2., 44., 75., 33., 53., 78.,
36., 84., 20., 35., 17., 12., 50.],
[32., 98., 81., 28., 64., 23., 67., 10., 26., 38., 40., 67., 59.,
54., 70., 66., 18., 38., 64., 70.],
[67., 26., 20., 68., 2., 62., 12., 20., 95., 63., 94., 39., 63.,
8., 40., 91., 66., 49., 94., 21.],
[24., 55., 58., 5., 66., 73., 99., 26., 97., 17., 78., 78., 96.,
83., 14., 88., 34., 89., 63., 72.],
[21., 36., 23., 9., 75., 0., 76., 44., 20., 45., 35., 14., 0.,
61., 33., 97., 34., 31., 33., 95.]])
推荐阅读
- hbase - 为什么新添加的 HBase 区域服务器无法获取分配的区域?
- node.js - 在本地安装和使用 nodemon
- wso2 - 在现有的 tomcat 中部署 WSO2 API Manager
- javascript - 如何在给定键数组的情况下创建嵌套对象
- javascript - Framework7 V1 - 返回另一个页面后如何重新加载/刷新页面
- angular - 如何使用 Angular 5 获取选定的下拉值
(primeng) 由于 ngOnInit 而面临问题 - sql - 从相关或不相关的表中获取结果
- sql - 包含子查询的表达式上的聚合函数不起作用
- linux - 配置 make gnome 指挥官 - 没有 glib 2.6.0
- javascript - 如何使用外部图像 url 打印 iframe 内容