我在 Python 中有两个列表:
a = [1, 5, 5]
b = [2, 10, 8]
if 1 < 2
and 5 < 10
and 5 < 8
,即如果列表的每个元素a
都小于其对应的列表元素b
,那么变量c
将等于1
; 如果它0
不起作用
我尝试过使用numpy.where
但我找不到一个函数来说明结果向量是否为空(相当于isempty
matlab的)
这是我到目前为止所尝试的:
a = [10, 10, 10]
b = [1, 1, 1]
a = np.asarray(a)
b = np.asarray(b)
if np.where(abs(a) / 5 < abs(b)): residual_check = 1
else: residual_check = 0
print(residual_check)
我怎么能做到?
您可以直接比较两个数组并用于
numpy.any
查看是否有任何比较,True
或者numpy.all
您是否希望它们全部为True
:您还可以通过
any
/all
和使用标准 Pythonzip
:如果你希望它
c
是 0/1 而不是True
/False
你只需要转换:如果使用,如果 的所有元素都小于对应的元素,它将
all
返回True
(1) 。如果使用,如果至少有一个元素与其伙伴相关,它将返回。a
b
any
True
您可以使用numpy.less函数逐个元素地比较列表,从而获得具有逻辑值的数组,然后使用numpy.all函数检查所有元素是否为真:
如果你想在没有任何库的情况下使用“纯”python,一个选项是如下代码:
zip运算符允许您遍历每个列表,在每次迭代时一次返回每个列表的一个元素。如果你不喜欢使用 zip 因为你觉得它很混乱,它会是这样的:
要获得
1
o0
而不是True
oFalse
,您可以直接将函数“cast”更改为整数检查功能
numpy.array_equal(array1, array2)
雷托拉
True
如果他们是一样的......False
如果他们不是。