我在python中为以下语句编写了一个while循环:
我有一个向量值函数,它返回一个带x和y值的2x1数组
我想编写一个代码,确保循环仅在函数给出的[x,y]小于[x,y]时运行
我尝试使用a.all()然而获取属性错误
还有另一种同时检查两种情况的方法吗?
我假设您的代码中的array
是np.array
。
让我们定义数据a
,b
和c
。
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
你可以这样做:
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]:
...