Python Numpy:使用一个数组作为另一个数组中元素的迭代测试

Python Numpy:使用一个数组作为另一个数组中元素的迭代测试,python,arrays,numpy,functional-programming,Python,Arrays,Numpy,Functional Programming,我有两个数组,A描述数据块的起始位置,B描述非块原始数据中感兴趣的事物的绝对位置 我希望能够生成块数组A的索引,该索引与块B中标识的元素的位置相匹配 e、 g 我想返回一个如下所示的数组: array([0, 0, 0, 2, 4, 4, 5]) 也就是说,用A来描述B中元素的索引位置的数组 我可以写一个循环,比如: list_holder = [] for e in B: list_holder.append(np.where(A>e)[0][0]-1) np.array(li

我有两个数组,
A
描述数据块的起始位置,
B
描述非块原始数据中感兴趣的事物的绝对位置

我希望能够生成块数组
A
的索引,该索引与块
B
中标识的元素的位置相匹配

e、 g

我想返回一个如下所示的数组:

array([0, 0, 0, 2, 4, 4, 5])
也就是说,用
A
来描述
B
中元素的索引位置的数组

我可以写一个循环,比如:

list_holder = []
for e in B:
    list_holder.append(np.where(A>e)[0][0]-1)
np.array(list_holder)
但事实证明,对于大型阵列,这会变得相当缓慢-是否有任何功能性或小技巧可以作为一行程序执行此相对简单的操作?

尝试
searchsorted()

尝试
searchsorted()

你的解是O(N^2)。但是你可以在O(N)中这样做,只需在1个过程中迭代列表。我不是python人,所以如果这段代码不是pythonic的,这就是为什么

def digitize_sorted(a, b):
  j=0
  c = np.zeros(len(b))      
  for i in range(len(b)):
    while j < len(a) and a[j] <= b[i]:
       j += 1
    c[i] = j-1
  return c
def数字化(a、b):
j=0
c=np.零(len(b))
对于范围内的i(len(b)):
当j
def digitize_sorted(a, b):
  j=0
  c = np.zeros(len(b))      
  for i in range(len(b)):
    while j < len(a) and a[j] <= b[i]:
       j += 1
    c[i] = j-1
  return c
def数字化(a、b):
j=0
c=np.零(len(b))
对于范围内的i(len(b)):

当jdef digitize_sorted(a, b): j=0 c = np.zeros(len(b)) for i in range(len(b)): while j < len(a) and a[j] <= b[i]: j += 1 c[i] = j-1 return c