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)