让切割间隔为 -
cut_intvs = [2,1,2]
然后,使用np.cumsum 检测切割位置-
cut_idx = np.cumsum(cut_intvs)
最后,使用带有np.split 的索引沿第一个轴切割输入数组并忽略最后一个切割以获得所需的输出,就像这样 -
np.split(arr,np.cumsum(cut_intvs))[:-1]
示例运行解释 -
In [55]: arr # Input array
Out[55]:
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10]])
In [56]: cut_intvs = [2,1,2] # Cutting intervals
In [57]: np.cumsum(cut_intvs) # Indices at which cuts are to happen along axis=0
Out[57]: array([2, 3, 5])
In [58]: np.split(arr,np.cumsum(cut_intvs))[:-1] # Finally cut it, ignore last cut
Out[58]:
[array([[1, 2],
[3, 4]]), array([[5, 6]]), array([[ 7, 8],
[ 9, 10]])]