如果第一个数组的值在元素方面小于第二个数组的值,则Numpy方法返回True

pokxtpni  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(111)

给定两个numpy数组

import numpy as np
arrA = np.array([0, 1, 2])
arrB = np.array([1, 4, 9])

字符串
我想实现一个方法,当且仅当第一个数组中的所有值都小于第二个数组中的相应值时,返回True。在这种情况下,它是True,因为0<1, 1<4, 2<9
由于实际应用中的数组非常庞大(大约1000个元素),因此最好有一个有效的方法。
第一个尝试是(arrA < arrB).all(),但它必须计算所有索引中的布尔值。下面的一个使用理解,我相信这是最快的一个。

isAllLessThan = all(x < y for (x, y) in zip(arrA, arrB))


numpy是否有任何方法(类似于np.all_less)可以应用于这种情况?

frebpwbc

frebpwbc1#

python和numpy方法的行为不同。
是的,numpy必须计算所有的组合,但它做得非常快,比python快得多。然而,Python的all能够在满足False时短路测试。
做第一个测试,其中B > A总是true,numpy更快:


的数据
在A = B的第二个测试中,因此第一个比较已经是假的,理解方法是常数时间:



在现实生活中,你可能介于两者之间,所以最好的方法取决于有一个False的概率。
以下是比较各种短路概率的时序的图表:


相关问题