While循环以数组形式同时检查两个条件?

时间:2019-04-12 12:41:48

标签: python python-3.x

我正在为python中的以下语句编写一个while循环:

我有一个向量值函数,该函数返回带有x和y值的2x1数组

我想编写一个代码,以确保仅在函数给出的[x,y]小于[x,y]时才运行循环

我尝试使用a.all(),但是出现属性错误

还有另一种方法可以同时检查两个条件吗?

2 个答案:

答案 0 :(得分:1)

我假设您代码中的arraynp.array

让我们定义数据abc

a = np.array([[3], [2]])  #[[3], [2]]
b = np.array([[2], [1]])
c = np.array([[4], [1]])

如果我们进行以下比较,我们将获得

In [1]: a > b
Out[1]:
array([[ True],
       [ True]])

In [2]: a > c
Out[2]:
array([[False],
       [ True]])

由于您要确保两个条件都同时为真,因此可以使用内置的python all(),只有在所有参数都为true时,Python才返回True。

In [3]: all(a > c)
Out[3]: False

In [4]: all(a > b)
Out[4]: True

答案 1 :(得分:0)

您可以这样做:

while all(abs(val) > err for val, err in zip(f(x, y), a):
    ...

或者这样:

while abs(f(x, y)[0]) > a[0] and abs(f(x, y)[1]) > a[1]:
    ...