gpt4 book ai didi

python - 以所有可能的组合拆分数组(不是常规拆分)

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

假设我有一个数组,

>>> import numpy as np
>>> array = np.linspace(1,4,4, dtype=np.int)
>>> array
array([1, 2, 3, 4])

我想要一个函数将这个数组拆分成所有可能的部分,这样,

没有拆分:

([1,2,3,4])

分成 2 部分:

([1], [2,3,4])
([1,2], [3,4])
([1,2,3] ,[4])

分成 3 部分:

([1], [2], [3,4])
([1,2]), [3], [4])
([1], [2,3], [4])

分成 len(array) 部分:

([1],[2],[3],[4])

我知道有 np.split(array, r),但它不会给出所有可能的拆分。例如np.split(array, 2) 会给出,

[array([0, 1]), array([2, 3])]

如您所见,这不是我需要的。如何实现我的需求?

最佳答案

你可以使用 itertools.combinations根据拆分次数生成在循环内拆分的索引:

>>> from itertools import combinations
>>> [np.split(array, idx)
... for n_splits in range(5)
... for idx in combinations(range(1, len(array)), n_splits)]
[[array([1, 2, 3, 4])],
[array([1]), array([2, 3, 4])],
[array([1, 2]), array([3, 4])],
[array([1, 2, 3]), array([4])],
[array([1]), array([2]), array([3, 4])],
[array([1]), array([2, 3]), array([4])],
[array([1, 2]), array([3]), array([4])],
[array([1]), array([2]), array([3]), array([4])]]

关于python - 以所有可能的组合拆分数组(不是常规拆分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45780190/

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