gpt4 book ai didi

python - 从 NumPy 二维数组中删除重复的列和行

转载 作者:IT老高 更新时间:2023-10-28 20:42:59 26 4
gpt4 key购买 nike

我正在使用二维形状数组来存储经度+纬度对。在某一时刻,我必须合并其中两个二维数组,然后删除任何重复的条目。我一直在寻找类似于 numpy.unique 的函数,但我没有运气。我做过的任何实现思考看起来非常“未优化”。例如,我正在尝试将数组转换为元组列表,使用 set 删除重复项,然后再次转换为数组:

coordskeys = np.array(list(set([tuple(x) for x in coordskeys])))

有没有现成的解决方案,我就不重复造轮子了?

为了清楚起见,我正在寻找:

>>> a = np.array([[1, 1], [2, 3], [1, 1], [5, 4], [2, 3]])
>>> unique_rows(a)
array([[1, 1], [2, 3],[5, 4]])

顺便说一句,我只想为它使用一个元组列表,但这些列表太大了,以至于它们消耗了我的 4Gb RAM + 4Gb 交换空间(numpy 数组的内存效率更高)。

最佳答案

这应该可以解决问题:

def unique_rows(a):
a = np.ascontiguousarray(a)
unique_a = np.unique(a.view([('', a.dtype)]*a.shape[1]))
return unique_a.view(a.dtype).reshape((unique_a.shape[0], a.shape[1]))

例子:

>>> a = np.array([[1, 1], [2, 3], [1, 1], [5, 4], [2, 3]])
>>> unique_rows(a)
array([[1, 1],
[2, 3],
[5, 4]])

关于python - 从 NumPy 二维数组中删除重复的列和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560440/

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