numpy中是否有任何功能可以将该数组按第一列进行分组?
我在互联网上找不到任何好的答案。
>>> a
array([[ 1, 275],
[ 1, 441],
[ 1, 494],
[ 1, 593],
[ 2, 679],
[ 2, 533],
[ 2, 686],
[ 3, 559],
[ 3, 219],
[ 3, 455],
[ 4, 605],
[ 4, 468],
[ 4, 692],
[ 4, 613]])
想要的输出:
array([[[275, 441, 494, 593]],
[[679, 533, 686]],
[[559, 219, 455]],
[[605, 468, 692, 613]]], dtype=object)
最佳答案
受到Eelco Hoogendoorn's library的启发,但没有他的库,并使用数组的第一列一直在增加的事实(如果没有,请先使用就位a.sort(axis=0)
进行排序)
>>> np.split(a[:,1], np.unique(a[:, 0], return_index=True)[1][1:])
[array([275, 441, 494, 593]),
array([679, 533, 686]),
array([559, 219, 455]),
array([605, 468, 692, 613])]
我没有“timeit”,但这可能是解决问题的更快方法:[编辑]我改善了答案
ns63sr
关于python - 是否有按功能分组的numpy?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38013778/