如何有效地将已排序的numpy数组中的相同元素移动到子数组中?
从这里:
import numpy as np
a=np.array([0,0,1,1,1,3,5,5,5])
到这里:
a2=array([[0, 0], [1, 1, 1], [3], [5, 5, 5]], dtype=object)
解决方法:
一种方法是获取轮班位置,数字发生变化,并使用这些索引将输入数组拆分为子阵列.要查找这些索引,可以在差分数组上使用np.nonzero
,然后使用np.split
进行拆分,如下所示 –
np.split(a,np.nonzero(np.diff(a))[0]+1)
样品运行 –
In [42]: a
Out[42]: array([2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6])
In [43]: np.split(a,np.nonzero(np.diff(a))[0]+1)
Out[43]:
[array([2, 2, 2, 2]),
array([3, 3, 3, 3]),
array([4, 4, 4, 4, 4, 4, 4]),
array([5, 5]),
array([6, 6, 6])]