查找列表是否包含特定的numpy数组 [英] Finding whether a list contains a particular numpy array
本文介绍了查找列表是否包含特定的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屋!
查看全文