Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 给定一个值,在排序数组中查找上下两个值_Python_Arrays_Numpy - Fatal编程技术网

Python 给定一个值,在排序数组中查找上下两个值

Python 给定一个值,在排序数组中查找上下两个值,python,arrays,numpy,Python,Arrays,Numpy,例如,我有数组x x = [10, 100, 1000, 10000] 如果我有600这个数字,那么我如何才能得到100作为下限值,1000作为上限值 假设输入已排序,我们可以使用来获取索引,其中600可以按排序顺序放置,然后简单地使用索引和一次性移位索引来获取索引时的下限和上限,如下所示- idx = np.searchsorted(x,600) out = x[idx-1], x[idx] 样本运行- In [41]: x = [10, 100, 1000, 10000] In [4

例如,我有数组x

x = [10, 100, 1000, 10000] 

如果我有600这个数字,那么我如何才能得到100作为下限值,1000作为上限值

假设输入已排序,我们可以使用来获取索引,其中
600
可以按排序顺序放置,然后简单地使用索引和一次性移位索引来获取索引时的下限和上限,如下所示-

idx = np.searchsorted(x,600)
out = x[idx-1], x[idx]
样本运行-

In [41]: x = [10, 100, 1000, 10000]

In [42]: idx = np.searchsorted(x,600)

In [44]: x[idx-1], x[idx]
Out[44]: (100, 1000)
我们也可以使用,我相信会快一点-

import bisect

idx = bisect.bisect_left(x,600)

假设输入已排序,我们可以使用以排序顺序放置
600
的索引,然后简单地使用索引和一次性移位索引来获得索引时的下限和上限,如下所示-

idx = np.searchsorted(x,600)
out = x[idx-1], x[idx]
样本运行-

In [41]: x = [10, 100, 1000, 10000]

In [42]: idx = np.searchsorted(x,600)

In [44]: x[idx-1], x[idx]
Out[44]: (100, 1000)
我们也可以使用,我相信会快一点-

import bisect

idx = bisect.bisect_left(x,600)
);检查当前数值是否大于测试值;如果是的话。
这可能会更容易

假设一个排序列表。

;检查当前数值是否大于测试值;如果是的话。
这可能会更容易


假设一个排序列表。

很好,但我会警告OP检查边缘情况,例如在搜索数组的最小值和最大值之外的值时,例如
0
10001
idx=np.searchsorted(x,0);x[idx-1],x[idx]
给出
(10000,10)
idx=np.searchsorted(x,10001);x[idx-1],x[idx]
给出了
索引器:列表索引超出范围
@StevenRumbalski良好的观点。OP需要澄清这些边缘情况的期望下限和上限。谢谢!我永远不会遇到值超出最小值/最大值的情况,但我会警告OP检查边缘情况,例如在搜索数组的最小值和最大值之外的值时,例如
0
10001
idx=np.searchsorted(x,0);x[idx-1],x[idx]
给出
(10000,10)
idx=np.searchsorted(x,10001);x[idx-1],x[idx]
给出了
索引器:列表索引超出范围
@StevenRumbalski良好的观点。OP需要澄清这些边缘情况的期望下限和上限。谢谢!我永远不会遇到值超出最小值/最大值的情况