在python中比较numpy数组的元素

时间:2011-07-08 18:29:38

标签: python arrays comparison numpy

我想比较两个1x3阵列,例如:

if output[x][y] != [150,25,75]

output此处为3x3x3,因此output[x][y]仅为1x3)。

我收到的错误是:

ValueError: The truth value of an array with more than one element is ambiguous. 

这是否意味着我需要这样做:

if output[y][x][0] == 150 and output[y][x][1] == 25 and output[y][x][2] == 75:

或者有更清洁的方法吗?

我正在使用Python v2.6

4 个答案:

答案 0 :(得分:7)

numpy方式是使用np.allclose

np.allclose(a,b)

虽然对于整数,

not (a-b).any()

更快。

答案 1 :(得分:4)

您还应该收到消息:

  

使用a.any()或a.all()

这意味着您可以执行以下操作:

if (output[x][y] != [150,25,75]).all():

这是因为2个数组或带有列表的数组的比较会产生布尔数组。类似的东西:

array([ True,  True,  True], dtype=bool)

答案 2 :(得分:3)

转换为列表:

if list(output[x][y]) != [150,25,75]

答案 3 :(得分:0)

你可以尝试:

a = output[x][y]
b = [150,25,75]

if not all([i == j for i,j in zip(a, b)]):