识别属于数组中不同序列的第一个元素

问题描述 投票:0回答:0

我有一个排序整数数组 (A),其中包含带间隙的升序序列。

A = array([1,2,3,4, 7,8,9, 23,24,25, 100])

我有一个数组 (B),其中包含一些通过外部过程从 A 中选择的值。

B = array([1,2,23,25,100])

我想过滤掉 B 中属于 A 中相同序列的值,因此它只返回每个唯一序列的第一个值

C = array([1,23,100])

我已经设法通过创建第二个列表来跟踪已经附加的内容来做到这一点,但这似乎有点笨拙。我想知道是否有更好的方法来做到这一点?

import numpy as np

A = np.array([1,2,3,4, 7,8,9, 23,24,25, 100])
B = np.array([1,2,23,25,100])
C = []

already_used_sequence = []

for x in enumerate(A):
    if x[0]-x[1] in already_used_sequence : #did we already group this sequence?
        pass
    elif len(np.intersect1d(B, x[1])) is not None: #is this value in B?
        for h in B:
            if h == x[1]: 
                C.append(x[1])
                already_used_sequence.append(x[0]-x[1])
C=np.array(C)
python numpy grouping unique sequence
© www.soinside.com 2019 - 2024. All rights reserved.