5
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)的方法呢?

4

2 回答 2

3

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

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

您用于 将数组与纯布尔值进行比较。 .array_equal()

>>> 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
于 2013-07-17T14:50:11.200 回答
-1

有关该问题的更多信息。如果你形成 my_list 与

my_list = [b,a] 

失败的是一个……有趣的问题。

于 2013-07-17T14:57:31.040 回答