查找numpy数组是否在numpy数组列表中-.all()不起作用

问题描述 投票:0回答:1

我正在尝试查找numpy数组列表中是否存在numpy数组,如果是,则打印'Yes'。我的数组和数组列表看起来像这样:

many = [np.array([23, 34, 12]), np.array([23, 34, 23]), np.array([45, 23, 48])]
test = np.array([23, 34, 12])

但是我按照建议使用.all()的每次尝试都似乎不起作用。这是我的尝试:

if np.array([23, 34, 12]) in many:
    print('yes')

if np.all(np.array([23, 34, 12])) in many:
    print('yes')

if np.array([23, 34, 12]).all() in many:
    print('yes')

每次出现以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我不明白要求我在这里使用.all()的方式。

任何帮助将不胜感激

python arrays numpy
1个回答
0
投票

这是numpy如何处理比较运算符==的烦人的副作用。

考虑此:

>>> print(1 == np.array([1,2,3]))
[ True False False]

显然,数组np.array([1,2,3])不是1,但是表达式计算的是,如果数组上的所有元素都是1,并且结果是一个包含布尔值的数组。

这会满足您的需求,请记住:

if any((test==a).all() for a in many):
    print('yes')
© www.soinside.com 2019 - 2024. All rights reserved.