gpt4 book ai didi

Numpy 删除重复的行

转载 作者:行者123 更新时间:2023-12-02 05:03:06 25 4
gpt4 key购买 nike

我只需要删除数组中重复的行但保留其中之一,我不能使用 unique 因为我需要维护顺序。示例

1 a234 125
1 a123 265
1 a234 125
1 a145 167
1 a234 125
2 a189 547
2 a189 547
3 a678 567
3 a357 569

我需要这个输出

1 a234 125
1 a123 265
1 a145 167
2 a189 547
3 a678 567
3 a357 569

最佳答案

我认为这可以满足您的需求,并使用 np.uniquereturn_index 关键字参数:

import numpy as np

a = np.array([[1, 'a234', 125],
[2, 'b189', 547],
[1, 'a234', 125],
[3, 'c678', 567],
[1, 'a234', 125],
[2, 'b189', 547]])

b = a.ravel().view(np.dtype((np.void, a.dtype.itemsize*a.shape[1])))
_, unique_idx = np.unique(b, return_index=True)

new_a = a[np.sort(unique_idx)]

>>> new_a
array([['1', 'a234', '125'],
['2', 'b189', '547'],
['3', 'c678', '567']],
dtype='|S4')

最hackiest的部分是 View b,它把每一行变成np.voiddtype的单个元素,所以整行可以通过 np.unique 比较是否相等。

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

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