Python列表中的Numpy.Array?

18 投票
5 回答
16770 浏览
提问于 2025-04-16 14:44

我有一个列表,这个列表里面装的是numpy数组,实际上是用来当作栈来用的。现在我想检查一个数组是否已经在这个列表里。如果这些是元组的话,我可以简单地写成 (1,1) in [(1,1),(2,2)] 这样就可以了。但是对于numpy数组来说,这样做就不行了;比如 np.array([1,1]) in [np.array([1,1]), np.array([2,2])] 会出错,错误信息是 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()。这个错误信息对我来说没什么帮助,因为它是说直接比较数组时出现了问题。

我很难相信这不可能实现,但我想我可能漏掉了什么。

5 个回答

2

Sven的回答是正确的选择,如果你想比较数组的实际内容。如果你只是想检查列表中是否包含同一个实例,你可以使用

any(a is x for x in mylist)

这样做的一个好处是,它适用于所有类型的对象。

2

如果你想在栈中找到一个数组的确切实例,不管里面的数据是否相同,你需要这样做:

id(a) in map(id, my_list)
29

要检查一个数组 a 是否在列表 my_list 中,可以使用以下方法:

any((a == x).all() for x in my_list)

撰写回答