gpt4 book ai didi

python - 为去重点集生成 numpy 索引数组

转载 作者:行者123 更新时间:2023-11-28 22:45:05 24 4
gpt4 key购买 nike

我有一个至少有 10 到数千个点(最多 30 亿个)的数组,其中一些是重复的。我想删除重复点并生成一个索引数组,该数组保留重复点的原始序列。

例如:

x = [(0, 0),  # (x1, y1)
(1, 0), # (x2, y2)
(1, 1), # (x3, y3)
(0, 0)] # (x4, y4)

去重 x,我们有 y:

y = list(set(x)) = [(1, 0),  # (x2, y2)
(0, 0), # (x1, y1) and (x4, y4)
(1, 1)] # (x3, y3)

然后我们将得到一个结果索引数组 z:

z = [1,  # (x1, y1) 
0, # (x2, y2)
2, # (x3, y3)
1] # (x4, y4)

是否有类似 numpy 的方式获取 z?这是一个蛮力实现:

z = []
for each_point in x:
index = y.index(each_point)
z.append(index)

最佳答案

x2 = np.ascontiguousarray(x).view(np.dtype((np.void, x.dtype.itemsize * x.shape[1])))
y_temp, z = np.unique(x2, return_inverse=True)
y = y_temp.view(dtype='int64').reshape(len(y_temp), 2)
print(y)
print(z)

产量

[[0 0]
[1 0]
[1 1]]

[0 1 2 0]

来源:Find unique rows in numpy.array

关于python - 为去重点集生成 numpy 索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28949060/

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