Numpy - считать количество значений до тех пор, пока условие не будет выполнено - PullRequest
0 голосов
/ 17 октября 2018

Если у меня есть два пустых массива одинакового размера.

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 не был удовлетворен.У элемента [5] в ArrayOne больше, чем у элемента [0] в ArrayTwo, поэтому до элемента [1] в ArrayTwo и т. Д. Имеется четыре элемента. Предоставление результата

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

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

В основном, по индексу 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
0 голосов
/ 18 октября 2018

Я думаю, что понял.Используя ответ @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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...