使用多处理包正确拆分行



我正在尝试计算一个大型数据集,为了更快地执行,我使用了多处理包。我试图将我的行分解成更小的数组,例如,我有209行(x(,即我在这里的范围。

q = [[i[0],i[-1]] for i in np.array_split(range(x), processors)]

这给我的输出为:

[[0, 26], [27, 53], [54, 79], [80, 105], [106, 131], [132, 157], [158, 183], [184, 209]]

预期输出:

[[0, 26], [26, 53], [53, 79], [79, 105], [105, 131], [131, 157], [157, 183], [183, 209]]

注意-我只想更改子列表的第一个值,忽略第一个完整的子列表,即[0.26]。此外,我不想操作多处理程序包,因为它在行值不断变化的情况下正确地分割了行数。

下面的代码应该可以做到这一点:

import numpy as np
x = 210
processors = 8
q = [[i[0],i[-1]] if idx==0 else [i[0]-1,i[-1]] for idx, i in enumerate(np.array_split(range(x), processors))]
print(q)

也就是说,你似乎在试图抓住开始和结束指数(我想(。为什么不直接得到np.array_split的结果呢。你给它一个数组,它把它分成chunck,然后你给进程。

相关内容

  • 没有找到相关文章

最新更新