dda*_*das 3 python arrays split numpy python-3.x
请在投票前仔细阅读此问题。我在这里的其他问题中找不到我的问题。
假设我有一个数组,
>>> import numpy as np
>>> array = np.linspace(1,4,4, dtype=np.int)
>>> array
array([1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
我想要一个函数,将这个数组分割成所有可能的部分,这样,
没有分裂:
([1,2,3,4])
Run Code Online (Sandbox Code Playgroud)
分成2几部分:
([1], [2,3,4])
([1,2], [3,4])
([1,2,3] ,[4])
Run Code Online (Sandbox Code Playgroud)
分成3几部分:
([1], [2], [3,4])
([1,2]), [3], [4])
([1], [2,3], [4])
Run Code Online (Sandbox Code Playgroud)
分成len(array)几部分:
([1],[2],[3],[4])
Run Code Online (Sandbox Code Playgroud)
我知道有np.split(array, r),但它不会给出所有可能的拆分。例如np.split(array, 2)会给,
[array([0, 1]), array([2, 3])]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这不是我需要的。如何实现我的需求?
您可以使用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])]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |