Python 查找已排序的浮点数组是否包含特定范围内的数字
我有一个已排序的浮点数数组,我想知道这个数组是否包含给定范围内的数字。注意,我对数组中数字的位置不感兴趣。我只想知道是否至少有一个数字在这个范围内 由于我必须在大量的时间间隔上执行相同的操作(在整个操作过程中数组保持不变),因此我关心的是效率Python 查找已排序的浮点数组是否包含特定范围内的数字,python,arrays,numpy,Python,Arrays,Numpy,我有一个已排序的浮点数数组,我想知道这个数组是否包含给定范围内的数字。注意,我对数组中数字的位置不感兴趣。我只想知道是否至少有一个数字在这个范围内 由于我必须在大量的时间间隔上执行相同的操作(在整个操作过程中数组保持不变),因此我关心的是效率 有人能帮我吗?正如评论中所说的,可能会有用,事实上确实如此。如问题中所述,数组保持不变,而我们在迭代中有不同的范围。因此,假设范围存储在(n,2)形状的数组中,第一列表示开始,第二列表示这些范围的停止值 我们将有一个np.searchsorted的解决方案
有人能帮我吗?正如评论中所说的,可能会有用,事实上确实如此。如问题中所述,数组保持不变,而我们在迭代中有不同的范围。因此,假设范围存储在
(n,2)
形状的数组中,第一列表示开始,第二列表示这些范围的停止值
我们将有一个np.searchsorted
的解决方案,如下所示-
np.searchsorted(a,ranges[:,0]) != np.searchsorted(a,ranges[:,1])
其思想是,如果某个范围内有任何数字,那么使用第一列(起始值)找到的排序索引将小于并因此不等于第二列(停止值)的索引
样本运行-
In [75]: a # Input data array
Out[75]:
array([ 13., 20., 22., 24., 36., 50., 52., 60., 64., 65., 65.,
66., 72., 76., 81., 84., 88., 88., 90., 97.])
In [76]: ranges # Array of ranges
Out[76]:
array([[ 19., 26.],
[ 22., 33.],
[ 25., 35.],
[ 38., 62.]])
In [77]: np.searchsorted(a,ranges[:,0]) != np.searchsorted(a,ranges[:,1])
Out[77]: array([ True, True, False, True], dtype=bool)
我想你忘了添加你试过的代码了……你自己试过什么吗?可能是一个开始的好地方我认为numpy柱状图是这个任务的一个好选择。它甚至不需要排序的数组,这是我一直在寻找的@安德里亚很高兴能帮上忙!