gpt4 book ai didi

python - 将文件存储为整数矩阵的有效方法

转载 作者:行者123 更新时间:2023-11-28 22:10:29 24 4
gpt4 key购买 nike

读取格式如下的文件的最有效方法是:

0 0 1 1 0 1 0 1
0 1 0 0 0 1 1 1
1 1 1 0 1 1 0 0

并将其存储为这样的矩阵?:

[[0, 0, 1, 1, 0, 1, 0, 1],
[0, 1, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 0, 1, 1, 0, 0]]

请注意,文件中的每一行都被读取为一个字符串,例如第一个是:

"0 0 1 1 0 1 0 1"

因此,字符串的字符必须被拆分并转换为整数。

我尝试了几种方法,我发现使用 map() 的方法更快:

代码a)

with open(filename, "r") as file:
matrix = []
for line in file:
matrix.append([value for value in map(int, line.split())])

我发现多处理要慢得多,但我确定我做错了什么:

代码 b)

from multiprocessing.dummy import Pool

with open(filename, "r") as file:
# splitting function
def f(file):
values = [int(char) for line in file for char in line.split()]
return values
# 4 threads
with Pool(4) as pool:
matrix = pool.map(f, file)

您知道实现此目标的更有效方法吗?

额外:如果您了解多线程/多处理,我将不胜感激任何关于为什么代码 b) 实际上比代码 a) 慢的见解!

谢谢!

最佳答案

你可以简单地使用 numpy:

import numpy as np
matrix = np.loadtxt(open("test.txt", "rb"), delimiter=" ", dtype=int).tolist()
print(matrix)

输出:

[[0, 0, 1, 1, 0, 1, 0, 1],
[0, 1, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 0, 1, 1, 0, 0]]

关于python - 将文件存储为整数矩阵的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56606260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com