在python中比较numpy数组的元素

Dou*_* AA 3 python arrays comparison numpy

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

if output[x][y] != [150,25,75]
Run Code Online (Sandbox Code Playgroud)

(output这是一个3x3x3所以output[x][y]只有1x3).

我收到的错误是:

ValueError: The truth value of an array with more than one element is ambiguous. 
Run Code Online (Sandbox Code Playgroud)

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

if output[y][x][0] == 150 and output[y][x][1] == 25 and output[y][x][2] == 75:
Run Code Online (Sandbox Code Playgroud)

或者有更清洁的方法吗?

我正在使用Python v2.6

unu*_*tbu 7

numpy方式是使用np.allclose:

np.allclose(a,b)
Run Code Online (Sandbox Code Playgroud)

虽然对于整数,

not (a-b).any()
Run Code Online (Sandbox Code Playgroud)

更快.


Sig*_*gyF 5

您还应该收到以下消息:

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

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

if (output[x][y] != [150,25,75]).all():
Run Code Online (Sandbox Code Playgroud)

这是因为两个数组或一个数组与一个列表的比较会产生一个布尔数组。就像是:

array([ True,  True,  True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)