同时以阵列形式同时检查两个条件的循环?

问题描述 投票:-1回答:2

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

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

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

我尝试使用a.all()然而获取属性错误

还有另一种同时检查两种情况的方法吗?

python python-3.x
2个回答
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时才返回True。

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

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

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]:
    ...
© www.soinside.com 2019 - 2024. All rights reserved.