【发布时间】:2019-12-02 18:32:19
【问题描述】:
问题的标题可能令人困惑,但问题出在这里,我有二维 numpy 数组。现在,我想获取第一列具有特定值的索引列表/数组,同时沿第二列排序:
a = np.array([[1,2],[1,3],[1,4],[1,5],[1,6],[2,9],[1,9],[1,7],[2,7],[1,8]])
index = [0, 1, 2, 3, 4, 7, 9, 6] # <---- the solution, I want this list
# this list gives sorted array for 1st column value 1
a[index] =
array([[1, 2],
[1, 3],
[1, 4],
[1, 5],
[1, 6],
[1, 7],
[1, 8],
[1, 9]])
注意:我想要索引列表,而不是给定值的排序数组。
我目前想出的如下:
tmp = a[np.lexsort((a[:,1],a[:,0]))]
tmp= tmp[tmp[:,0]==1]
index = [np.where(np.all(a==i,axis=1))[0][0] for i in tmp]
你可以看到这很糟糕,而且我正在处理非常大的数据集,这需要真正的改进。有没有什么方法可以用 numpy 更有效地完成这个任务?
【问题讨论】:
-
如果您的问题得到解决,您应该标记正确答案。
-
发布的解决方案是否对您有用?对已发布的解决方案有何反馈?