numpy-计算值的数量,直到满足条件

时间:2018-10-17 20:18:49

标签: python arrays numpy

如果我有两个大小相同的numpy数组。

ArrayOne = np.array([ 2, 5, 5, 6, 7, 10, 13])

ArrayTwo = np.array([ 8, 10, 12, 14, 16, 18, 24])

在数组开始之前,如何计算有多少个元素。除非满足条件ArrayOne> = ArrayTwo。在这种情况下,直到该条件有多少个元素。然后根据结果制作一个数组。

因此,以元素[0]为例,前面有0个元素。对于元素[1],前面有1个元素,并且不满足ArrayOne> = ArrayTwo。 ArrayOne中的元素[5]大于ArrayTwo中的元素[0],因此直到ArrayTwo等中的元素[1]为止,共有四个元素。 给出结果

result = np.array([ 0, 1, 2, 3, 4, 4, 3])

谢谢。

2 个答案:

答案 0 :(得分:0)

基本上,在索引i处您具有值

value = i -count(how often element i in array one was bigger than array two until index i)

因为我在使用该死的自动更正功能在移动设备上,所以将两个数组重命名为a和b。

def get_value(a, b, i):
    max_value = a[i]
    nb_smaller_elements = sum(1 for el in range(i) if b[el] < max_value)
    return i - nb_smaller_elements

答案 1 :(得分:-1)

我想我明白了。使用@Paul Panzer的答案,我做了一个遍历列表的for循环。

def toggle(ArrayOne,ArrayTwo):
    a = 0
    sum = -1
    linels = []
    for i in range(len(ArrayOne)):
        sum += 1
        a = sum - np.searchsorted(ArrayTwo, ArrayOne[i])
        linels.append(a)
    return np.array(linels)

我得到结果

linels = np.array([ 0, 1, 2, 3, 4, 4, 3])