Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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_List_Numpy - Fatal编程技术网

Python 检查给定浮点数落在列表中的哪个浮点数之间

Python 检查给定浮点数落在列表中的哪个浮点数之间,python,list,numpy,Python,List,Numpy,我有一个如下列表: # Ordered list. a = [0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9] # Not ordered list. b = [0.12, 0.53, 0.30, 0.03, 0.77, 0.62, 0.98, 0.01, 0.42, 0.33, 1.3] 我需要遍历如下所示的浮动列表: # Ordered list. a = [0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9] # Not ordered list.

我有一个如下列表:

# Ordered list.
a = [0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9]
# Not ordered list.
b = [0.12, 0.53, 0.30, 0.03, 0.77, 0.62, 0.98, 0.01, 0.42, 0.33, 1.3]
我需要遍历如下所示的浮动列表:

# Ordered list.
a = [0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9]
# Not ordered list.
b = [0.12, 0.53, 0.30, 0.03, 0.77, 0.62, 0.98, 0.01, 0.42, 0.33, 1.3]
检查列表
a
中的哪些元素之间,列表
b
中的每个元素都会下降,并返回
a
中元素的索引(右侧)。例如,对于上面的列表
b
,结果如下所示:

indxs = [1, 4, 2, 0, 6, 5, 7, 0, 3, 2, 7]
(请注意索引7,它指向与
>max(a)
相关的
a
中的一个额外元素)

我可以使用如下所示的相当详细的
for/if
循环来实现这一点,但我想知道是否有一种更简单的方法可以使用一些我可能不知道的函数(欢迎使用
numpy
/
scipy
函数)

MWE:

indxs=[]
对于b中的b_el:
#检查浮子是否位于max(a)的右侧
如果b_el>最大值(a):
indxs.append(len(a))
其他:
对于a中的a_el:
如果b_el
普通的Python解决方案是模块,它具有以下几个功能:

NumPy解决方案是,其功能大致相同:

>>> numpy.searchsorted(a, b, side='right')
array([1, 4, 2, 0, 6, 5, 7, 0, 3, 2, 7], dtype=int64)
下面是一个表达式:

where(b<=a.max(),argmax((b[:,None] - a) < 0,axis=1),len(a))
其中(b)