Python Numpy数组比较报ValueError歧义错误的解决方法
错误原因
你写的a_and_b[::2] == a不会返回单个布尔值,而是会返回逐元素对比的布尔数组[ True, True, True, True],Python的三元判断无法直接对多元素数组做布尔判定,所以会抛出歧义错误。
正确修改方案
推荐使用numpy专门判断数组全等的np.array_equal()方法,它会同时校验数组形状和所有元素是否完全匹配,不需要额外处理其他边界。
修改后的代码如下:
import numpy as np a = np.array([5,32,1,4]) b = np.array([1,5,11,3]) a_and_b = np.array([5,1,32,5,1,11,4,3]) result = 'yes' if np.array_equal(a_and_b[::2], a) else 'no' print(result)
运行后就会输出预期的yes。
你也可以用逐元素对比后调用.all()的写法,注意要加括号包裹对比逻辑:
result = 'yes' if (a_and_b[::2] == a).all() else 'no'
注意:这种写法如果两个数组形状不一致时会触发numpy的广播机制,可能得到不符合预期的结果,因此更推荐第一种
np.array_equal的写法。
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

