python – 如何将numpy数组中的相同元素移动到子数组中

如何有效地将已排序的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])]
上一篇:【U3D】脚本引用的类,如何显示在编辑器界面


下一篇:python – 使用itertools任意数量的具有依赖关系的不同范围的嵌套循环?