gpt4 book ai didi

python - 根据值的唯一性删除 numpy 数组的行

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:29 34 4
gpt4 key购买 nike

假设我有一个这样的二维数组

numpy.array(
[[0,1,1.2,3],
[1,5,3.2,4],
[3,4,2.8,4],
[2,6,2.3,5]])

我想形成一个数组,根据最后一列值的唯一性消除整行,根据第三列的值选择要保留的行。例如在这种情况下,我只想保留最后一列为 4 的行,并选择具有第三列次要值的行,结果是这样的:

array([0,1,1.2,3],
[3,4,2.8,4],
[2,6,2.3,5])

从而消除行 [1,5,3.2,4]

哪种方法最好?

最佳答案

我的 numpy 不适合实践,但这应该可行:

#keepers is a dictionary of type int: (int, int)
#the key is the row's final value, and the tuple is (row index, row[2])
keepers = {}
deletions = []
for i, row in enumerate(n):
key = row[3]
if key not in keepers:
keepers[key] = (i, row[2])
else:
if row[2] > keepers[key][1]:
deletions.append(i)
else:
deletions.append(keepers[key][0])
keepers[key] = (i, row[2])
o = numpy.delete(n, deletions, axis=0)

我已经从我的声明式解决方案中大大简化了它,它变得非常笨拙。希望这更容易理解;我们所做的就是维护我们想要保留的值字典和我们想要删除的索引列表。

关于python - 根据值的唯一性删除 numpy 数组的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/469931/

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