gpt4 book ai didi

python - Numpy 删除重复的列值

转载 作者:太空狗 更新时间:2023-10-30 00:37:46 25 4
gpt4 key购买 nike

我有一个如下所示的 numpy 数组

array([[ 6,  5],
[ 6, 9],
[ 7, 5],
[ 7, 9],
[ 8, 10],
[ 9, 10],
[ 9, 11],
[10, 10]])

我想选择 y 坐标唯一的元素。如果两个 y 坐标相同,我想选择 x 坐标较小的元素。

预期输出

array([[ 6,  5],
[ 6, 9],
[ 8, 10],
[ 9, 11]])

解释

选择 [6,5] 而不是 [7,5]

选择 [8,10] 而不是 [9,10][10,10]

选择 [9, 11]

谢谢

最佳答案

首先,按第一列排序:

a = a[a[:, 0].argsort()]

使用 np.unique 返回唯一索引使用 return_index 标志:

a[np.unique(a[:, 1], return_index=True)[1]]

array([[ 6, 5],
[ 6, 9],
[ 8, 10],
[ 9, 11]])

一些时间:

a = np.random.randint(1, 10, 10000).reshape(-1, 2)

In [45]: %timeit rows_by_unique_y(a)
3.83 ms ± 137 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [46]: %timeit argsort_unique(a)
370 µs ± 8.26 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

是的,我的方法使用初始排序,但在 Python 中的 numpy beat 迭代中使用矢量化操作。

关于python - Numpy 删除重复的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com