可以对列表中的自定义对象字段使用numpy.argmax吗?

4 投票
2 回答
4162 浏览
提问于 2025-04-16 18:34

类似这样的内容:

class Test:
    def __init__(self, n):
        self.id = n

    def __str__(self):
        return str(self.id)

my_list = []
my_list.append(Test(1))
my_list.append(Test(2))
my_list.append(Test(3))

有没有办法找到列表中id最大或最小的元素呢?

2 个回答

2

如果你为类 Test 定义了 __cmp__ 操作符,那么 argmax 就会按照预期的方式工作。

5

在你的例子中,其实根本不需要使用 numpy.argmax()。因为你的对象是在一个普通的 Python 列表里,你可以直接用 Python 自带的 max() 函数:

index = max(range(len(my_list)), key=lambda i: my_list[i].id)

或者

index = max(enumerate(my_list), key=lambda x: x[1].id)[0]

这样也能找到那个 id 最大的项目的索引。

撰写回答