查找列表是否包含特定的numpy数组 [英] Finding whether a list contains a particular numpy array

查看:268
本文介绍了查找列表是否包含特定的numpy数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

import numpy as np

a = np.eye(2)
b = np.array([1,1],[0,1])

my_list = [a, b]

a in my_list返回true,但是b in my_list返回"ValueError:具有多个元素的数组的真值不明确.请使用a.any()或a.all()".我可以通过先将数组转换为字符串或列表来解决此问题,但是是否有更好的(更Pythonic的)方法呢?

a in my_list returns true, but b in my_list returns "ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()". I can get around this by converting the arrays to strings or lists first, but is there a nicer (more Pythonic) way of doing it?

推荐答案

问题是在numpy中,==运算符返回一个数组:

The problem is that in numpy the == operator returns an array:

>>> a == b
array([[ True, False],
       [ True,  True]], dtype=bool)

您使用 .array_equal() 来比较数组到纯布尔值.

You use .array_equal() to compare arrays to a pure boolean value.

>>> any(np.array_equal(a, x) for x in my_list)
True
>>> any(np.array_equal(b, x) for x in my_list)
True
>>> any(np.array_equal(np.array([a, a]), x) for x in my_list)
False
>>> any(np.array_equal(np.array([[0,0],[0,0]]), x) for x in my_list)
False

这篇关于查找列表是否包含特定的numpy数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆